Chapter 3. rustfmt

The rustfmt tool provides automatic formatting of Rust source code.

Rust Toolset is distributed with rustfmt 1.0.0.

3.1. Installing rustfmt

On Red Hat Enterprise Linux 7, the rustfmt tool is provided by the rust-toolset-1.31-rustfmt-preview package. To install it:

# yum install rust-toolset-1.31-rustfmt-preview

3.2. Using rustfmt as a standalone tool

To format a rust source file and all its dependencies with the rustfmt tool:

  • For Red Hat Enterprise Linux 7:

    $ scl enable rust-toolset-1.31 'rustfmt source-file'
  • For Red Hat Enterprise Linux 8:

    $ rustfmt source-file

Replace source-file with path to the source file.

By default, rustfmt modifies the affected files in place without displaying details or creating backups. To change the behavior, use the --write-mode value option. For further details see the help mesage of rustfmt:

  • For Red Hat Enterprise Linux 7:

    $ scl enable rust-toolset-1.31 'rustfmt --help'
  • For Red Hat Enterprise Linux 8:

    $ rustfmt --help

Additionally, rustfmt accepts standard input instead of a file and provides its output in standard output.

3.3. Using rustfmt with cargo

To format all source files in a cargo crate:

  • For Red Hat Enterprise Linux 7:

    $ scl enable rust-toolset-1.31 'cargo fmt'
  • For Red Hat Enterprise Linux 8:

    $ cargo fmt

To change the rustfmt formatting options, create the configuration file rustfmt.toml in the project directory and supply the configuration there. For further details see the help message of rustfmt:

  • For Red Hat Enterprise Linux 7:

    $ scl enable rust-toolset-1.31 'rustfmt --config-help'
  • For Red Hat Enterprise Linux 8:

    $ rustfmt --config-help

3.4. Additional Resources

  • Help messages of rustfmt:

    • For Red Hat Enterprise Linux 7:

      $ scl enable rust-toolset-1.31 'rustfmt --help'
      $ scl enable rust-toolset-1.31 'rustfmt --config-help'
    • For Red Hat Enterprise Linux 8:

      $ rustfmt --help
      $ rustfmt --config-help
  • The file Configurations.md installed under /opt/rh/rust-toolset-1.31/root/usr/share/doc/rust-toolset-1.31-rustfmt-preview-0.8.2/Configurations.md