😍

Rust開発時の便利ツールたち

2021/09/29に公開
1

前書き

Rustを書くときに便利なツールをまとめた記事が無い気がしたので作成。(ちゃんと探してないので既にあるかも)

公式ツール

  • cargo パッケージマネージャ
    • 基本だけどとても便利なツール
    • 一度はThe Cargo Bookを読んでおくことを推奨。
  • rustfmt フォーマッター
    • cargo fmt でもフォーマットの修正が出来る。(こっちを使うことが多い)
  • clippy lintツール
    • こう書いたほうが良いよという提案もしてくれるので便利。
    • cargo clippy --fix を使うと自動で直してくれる。
  • rust-analyzer Language Server
    • rls もあるが、(最近は?) rust-analyzer の方がメジャーな気がする。
    • 追記 : RLSは非推奨になりました。RLS Deprecation

非公式ツール

  • cargo-watch ソースコードの変更を検知して自動で cargo check などを走らせてくれるツール
    • cargo watch -x fmt -x clippy -x test みたいに複数のことを実行できるので便利。
  • cargo-edit Cargo.toml に依存を追加するときに便利なツール
    • Cargo.toml 開いて1行追加するだけなのにわざわざコマンド要る? と思っていたのですが、自動で最新バージョンを入れてくれるので便利。
    • 地味に面倒なfeaturesの追加も--featuresで出来るので便利
    • 追記:1.62よりcargo addが公式に採用されました。
  • cargo-expand マクロを展開してくれるツール
  • cargo-asm 指定した関数のアセンブリを表示してくれるツール
    • アセンブリを見ながら最適化したいときに便利。
  • cargo-valgrind valgrind上で cargo run してくれるツール
    • FFI周りなどメモリリークが起きやすいときには便利。
  • cargo-script Rustをスクリプト言語のように扱えるツール
    • 1行目に #!/usr/bin/env run-cargo-script と書いて実行権限付与しておくとスクリプト言語っぽく実行できる。
    • Rustでちょっとしたツールの作成をしたいときに便利。
  • git-delta 見やすいdiff
    • これに関しては他の言語を書くときも便利。
  • cargo-outdated 古いクレートを使っていないか確認してくれるツール
    • 自分で依存クレートのバージョンを逐一調べるのは面倒なので便利。
  • cargo-audit 使っているクレートに脆弱性があるか調べてくれるツール
  • cargo-build-deps 依存クレートのみビルドしてくれるツール
    • Dockerfileでキャッシュを活かして時間を短縮できるので便利。
  • cargo-bisect-rustc rustcのどのコミットでICEなどが起きるようになったか調査するツール
    • ダウンロードすれば済む場合はrustcのコンパイルをしないでくれる

後書き

個人的に使っていて便利なツールを挙げました。ここに載っていないもので便利なツールがありましたらコメントで教えてもらえると幸いです。また公式非公式の分類が間違っていたら教えて下さい。

ChangeLog

  • 2021/10/1 リンクを追加
  • 2021/10/2 fix typo
  • 2021/10/28 add cargo-build-deps
  • 2021/12/24 cargo-playからcargo-scriptに変更
  • 2022/1/29 cargo-editの--featuresについて追記
  • 2022/2/21 add cargo-bisect-rustc
  • 2022/2/23 rust-analyzerを公式に移動
  • 2022/7/2 Rust 1.62よりcargo addが公式に入った旨を追記
  • 2022/7/2 Tier分けをやめた
  • 2022/7/2 RLSの非推奨化について追記
  • 2022/7/2 cargo-auditを追加

Discussion

sawatanisawatani

rust-analyzer は Mozilla もいちおう開発に加わっているのでオフィシャルだと思ってます。