TL;DR

  • Rust には、標準の cargo サブコマンドに加えて、多くのサードパーティ製ツールがある。ツールの一覧はすぐ古くなるので、使えるツールを自分で探す。
  • 何度も使うツールは CI に組み込み、速くて誤検知のないツールは IDE に組み込む。

内容

標準の cargo サブコマンド

cargo には、次のような標準のサブコマンドもある。

  • cargo check: 機械語を生成せず、コンパイルのチェックだけを行う。速い構文チェックとして便利である
  • cargo doc: ドキュメントを生成する(項目27)
  • cargo bench: ベンチマークを実行する(項目30)
  • cargo update: 依存クレートを、セマンティックバージョニングで互換性のある最新のバージョンに更新する
  • cargo tree: 依存グラフを表示する
  • cargo metadata: ワークスペースのパッケージと依存クレートのメタデータを取得する。メタデータの型は cargo_metadata クレートが提供している

サードパーティの cargo ツール

cargo-udeps や cargo-deny は、cargo metadata で取得したメタデータを使っている。ほかに、抽象構文木を使う cargo ツールもある。こうしたツールの多くは syn クレートに依存している。syn は主に手続き的マクロで使われるが、それ以外の用途にも使える API を含んでいる。例として、cargo-expand や、コードカバレッジの生成と管理を支援する cargo-tarpaulin がある。

ブログなどにまとめられたツールの一覧は主観的で、すぐに古くなる。使えるツールは自分で探すのがよい。cargo-<something> という名前で検索すれば多くのツールが見つかるが、メンテナンスされていないものもあるので吟味する。

Rust に形式的検証を適用する取り組みも行われている(Rust verification tools (2021))。

ツールを組み込む

何度も使うツールは、CI に組み込む(項目32)。速くて誤検知を出さないツールは、IDE に組み込む(Rust の公式ツール一覧)。

覚えておくべきツール

キーワード

自分の理解

この項目では、自分があまり使ったことのなかった標準の cargo サブコマンドを中心に整理した。

形式的検証は、コードの正しさについてより高いレベルの保証が必要な場合に役立つのかもしれない。