TL;DR
Rust のコードを、スタイルガイドに沿って整形するツール。デフォルトでは Rust 公式のスタイルガイドに従う。
なぜ必要か
整形をツールに任せると、コードの見た目がそろい、レビューで書き方の好みを議論しなくて済む。Effective Rust の項目 32 では、CI で rustfmt による整形をチェックすることを勧めている。
仕組み
rustfmt の README によると、rustup component add rustfmt で入れ、プロジェクトのディレクトリで cargo fmt を実行する。cargo fmt は単一のクレートにもワークスペースにも使える。設定は rustfmt.toml か .rustfmt.toml に書く。
--check を付けると、整形されていない入力があったときにエラーの終了コードを返す。CI では cargo fmt --all -- --check のように使う。
例
cargo fmt # 整形する
cargo fmt --all -- --check # 整形されていなければ失敗する注意点
マクロの定義や呼び出しは、一部しか整形されない。Effective Rust の項目 28 でも、マクロの中のコードは Rust の構文の慣習に従わないので、rustfmt で整形されないことをマクロのデメリットに挙げている。