rustfmtのcheckオプションと整形エラーについての備忘録

はじめに

現在、RustプロジェクトをCI/CDできるよう色々いじって楽しんでます。

その中で、Rustで以下の記述(main.rs)に対してrustfmtを行ったら警告が出ました。

mod lib;
fn main() {
    let args: Vec<String> = std::env::args().collect();

    let num: u32 = args[1].clone().parse().unwrap();

    lib::run(num);
}

上の記述で何が警告になったか分からなかった上、「rustfmtって自動で整形してくれるんじゃなかったっけ?」となり、全然rustfmtを理解してなかったことに気づかされたので警告が出た原因とrustfmtの機能について調べ記事にしました。

rustfmtの使い方

cargo fmt

これが基本の使い方です。このコマンドを実行するとワークスペース内のファイルに対して整形を実行します

cargo fmt -- --check

--checkオプションをつけると、整形を行わずに警告を表示するだけになります。

(なので自動で整形してくれなかったのはこれが原因でした)

Note

cargoのオプションと区別するため、--checkの前に--をつけます。

何に警告を出されていたのか

さて、上で出したコード、警告が出たのですが、その時に下記のメッセージがでました。

Diff in \\?\C:\tomo_archive\workdesk\00_github_rust_try_cd\src\main.rs at line 6:

     lib::run(num);
 }
+

なんのことだ?と思い、自動で整形させるようにし、その違いを見てみたところ、、、

なんと、、、

ファイルの最後の行が空白で終わっておらず、}の行で終わっていたことが原因でした。

改行が足りてないという警告だったんですね

参考

zenn.dev