跳到内容

rust-lang/rustfmt

生锈linux操作系统 雨衣 窗户 板条箱.io

根据样式准则格式化Rust代码的工具。

如果你想帮忙(你应该这样做,这是一个有趣的项目!),请参阅贡献.md以及我们的的代码行为.

您可以在Travis CI构建中使用rustfmt。我们提供最小Travis CI配置(请参见在这里).

快速入门

你可以跑步生锈锈蚀1.24及以上。

关于稳定的工具链

安装步骤:

rustup组件添加rustfmt

要在当前工作目录中的货物项目上运行,请执行以下操作:

货物fmt

在Nightly工具链上

为了最新和最好的生锈,需要夜间。

安装步骤:

rustup组件add rustfmt--toolchain nightly

要在当前工作目录中的货物项目上运行,请执行以下操作:

货物+夜间fmt

限制

Rustfmt尝试尽可能多地编写Rust代码。有时,代码甚至不需要编译!一般来说,我们希望限制不稳定性;尤其是在1.0之后,大多数代码的格式不应该随着Rustfmt的改进而改变。然而,有些事情Rustfmt做不到做得好或做不好(因此格式可能会发生重大变化,甚至1.0后)。我们希望随着时间的推移减少限制列表。

以下列表列举了Rustfmt不起作用的区域或稳定性保证不适用(我们不区分这两者因为在未来,Rustfmt可能会在当前没有的代码上工作):

  • 程序的任何部分都不解析的程序(解析是早期的编译和Rust阶段包括宏扩展)。
  • 宏声明和使用(当前状态:一些宏声明和使用格式化)。
  • 注释,包括带有“内部”注释的任何AST节点(Rustfmt没有目前试图格式化注释,它确实格式化了包含注释的代码,但这种格式可能会在未来发生变化)。
  • 注释中代码块中的生锈代码。
  • 程序的任何片段(即稳定性保证仅适用于整体程序,即使现在可以格式化程序片段)。
  • 包含非ascii unicode字符的代码(我们认为Rustfmt最有效这里,但没有测试覆盖率或经验可以100%确定)。
  • Rustfmt中的bug(与任何软件一样,Rustfft也有bug,我们不考虑bug打破我们稳定性保证的修复)。

正在运行

只需键入即可运行Rustfmtrustfmt文件名如果您使用货物装置。如果给定文件包含越行,则对该文件运行rustfmt模块,然后我们也重新格式化这些模块。因此,要在整个模块或板条箱上运行,您需要只需要在根文件(通常是mod.rs或lib.rs)上运行。Rustfmt还可以从标准输入读取数据。或者,您可以使用货物fmt格式化所有机箱的二进制和库目标。

你可以跑步rustfmt--帮助有关可用参数的信息。针对项目运行rustfmt的最简单方法是货物fmt.货物fmt对两者都有效单板条箱项目和货物工作区.请参阅货物fmt帮助了解用法信息。

您可以指定自己的路径生锈通过设置RUSTFMT公司环境变量。这是在v1.4.22中添加的,因此您必须拥有此版本或更新版本才能利用此功能(cargo fmt--版本)

正在运行生锈直接地

要格式化stdin中的单个文件或任意代码生锈应该使用二进制。一些示例如下:

  • rustfmt lib.rs main.rs将就地格式化“lib.rs”和“main.rs”
  • 生锈将从stdin读取代码并将格式写入stdout
    • echo“fn main(){}”|rustfmt将发出“fn main(){}”。

有关更多信息,包括参数和发射选项,请参见rustfmt--帮助.

验证代码是否格式化

与一起运行时--检查,Rustfmt将退出0如果Rustfmt不会对输入进行任何格式更改,以及1如果Rustfmt会做出改变。在其他模式下,Rustfmt将退出1如果在格式化(例如解析或内部错误)和0如果格式化已完成,没有错误(无论是否进行了更改)。

从编辑器运行Rustfmt

检查CI服务器上的样式

为了保持代码库的格式一致,使CI构建失败可能会有所帮助当pull请求包含未格式化的代码时。使用--检查指示如果输入格式不正确,则退出rustfmt并返回错误代码。它还将打印任何发现的差异。(旧版本的Rustfmt没有支持--检查,使用--写入模式差异).

最小Travis设置可能如下所示(需要Rust 1.31.0或更高版本):

语言:
before_script之前:-rustup组件添加rustfmt
脚本:-货物建造-货物检验-货物全检

请参见此博客帖子了解更多信息。

如何构建和测试

货物建造以进行构建。

货物试验运行所有测试。

要在此之后运行rustfmt,请使用货物运行--bin rustfmt--文件名。请参阅上面关于运行rustfmt的注意事项。

配置Rustfmt

Rustfmt的设计非常便于配置。您可以创建一个名为铁锈托姆.rustfmt.toml型,将其放置在项目或任何其他父项中目录,它将应用该文件中的选项。请参见rustfmt--help=配置查看可用的选项,或者如果您想查看视觉样式预览,GitHub页面.

默认情况下,Rustfmt使用符合生锈风格指南通过样式RFC过程.

配置选项要么稳定要么不稳定。稳定的选项可以始终而不稳定的工具只能在夜间工具链和opt-in上使用。请参见GitHub页面了解详细信息。

Rust的版本

Rustfmt可以通过阅读货物.toml文件,如果通过Cargo的格式化工具执行货物fmt。否则,版本需要在中指定铁锈托姆,例如,与edition=“2018”.

提示

  • 如果你不想让沙夫姆弄坏东西,使用#[rustfmt::skip]

  • 为了防止rustfmt格式化宏或属性,使用#[rustfmt::skip::macros(target_macro_name)]#[rustfmt::skip::attributes(target_attribute_name)]

    例子:

    #![生锈::跳过::属性(自定义属性)]
    
    #[自定义属性(这里的格式应该是,跳过)]
    #[生锈::跳过::(html格式)]
    第2页主要的() {
        宏_结果1=html格式! {<div>你好</div>}.到字符串(_S)();
  • 运行rustfmt时,放置一个名为铁锈托姆.rustfmt.toml型在里面目标文件目录或其父目录以覆盖的默认设置锈迹。您可以使用生成包含默认配置的文件rustfmt—打印配置默认值rustfmt.toml并根据需要进行定制。

  • 编译成功后生锈可执行文件可以在目标目录。

  • 如果您在编译Rustfmt时遇到问题(或在尝试安装),确保安装了最新版本的Rust。

  • 您可以使用--emit标志更改rustfmt发出更改的方式:

    例子:

    cargo fmt---emit文件

    选项:

    标志 描述 仅限夜间
    文件夹 覆盖文件的输出
    标准输出 将输出写入标准输出
    新闻报道 显示输入文件的处理量 是的
    代码检查 以支票样式发出 是的
    杰森 以json格式发出diff 是的

许可证

Rustfmt是根据麻省理工学院许可证和Apache许可证(2.0版)。

请参见PACHE许可证许可证-MIT了解详细信息。