Prompt

vscodeのrust-analyzerのおすすめの設定!

VSCode での Rust 開発体験を「最高」から「神」へと昇華させる設定だね!Windows 11 と Ubuntu 両方を使っている君なら、OS 間で設定を共有(Settings Sync)しているかもしれないけど、どちらの環境でも効く rust-analyzer (RA) の鉄板設定を紹介するよ。

VSCode の settings.json に追記して使ってみてくれ!


🛠️ rust-analyzer おすすめ設定集

1. リアルタイムで最強の Linter (Clippy) を回す

デフォルトだと cargo check が走るけど、これを cargo clippy に変えるのが Rustacean の常識だよ。

JSON

"rust-analyzer.check.command": "clippy",

これで、コードを書いている最中に「もっと良い書き方があるよ」と Clippy 先輩がリアルタイムで囁いてくれるようになる。

2. インレイヒント (Inlay Hints) の強化

型推論が強力な Rust では、変数の型を省略しがちだよね。RA は型を薄く表示してくれるけど、さらに詳細を出す設定だ。

JSON

// 型ヒントを表示(デフォルトでオンだけど確認!)
"editor.inlayHints.enabled": "on",
// 引数名のヒントを表示(関数呼び出し時に `x: 10` のように出る)
"rust-analyzer.inlayHints.parameterHints.enable": true,
// チェーンメソッドの途中の型を表示(これがめちゃくちゃ便利!)
"rust-analyzer.inlayHints.chainingHints.enable": true,
// クロージャの戻り値の型を表示
"rust-analyzer.inlayHints.closureReturnTypeHints.enable": "always",

3. 保存時の自動整形 (rustfmt)

インデントや改行を rustfmt に任せる設定だ。これを入れないと Rust の「標準スタイル」を維持するのは不可能に近い!

JSON

"[rust]": {
    "editor.defaultFormatter": "rust-analyzer",
    "editor.formatOnSave": true,
    "editor.semanticHighlighting.enabled": true
},

4. 補完機能のカスタマイズ

メソッド補完時にカッコを自動で入れたり、便利な「スニペット」を有効にする設定。

JSON

// メソッド補完時に () を自動挿入
"rust-analyzer.completion.callable.snippets": "add_parentheses",
// 外部クレートの自動インポートを有効化
"rust-analyzer.completion.autoimport.enable": true,

💡 知ってると捗る豆知識:Cargo.toml の編集

RA は Cargo.toml の編集も助けてくれるんだ。

  • crates.io の最新バージョン表示: 依存関係を書いているときに、現在の最新バージョンを補完やツールチップで教えてくれる。

  • Feature の管理: クレートの features を選ぶ際、どんなオプションがあるかサジェストしてくれるよ。


⚠️ 見落とされがちな落とし穴:メモリ使用量

RA は非常に高機能な分、大規模なプロジェクト(特に target ディレクトリが数GBに膨らんでいる場合)では、メモリをかなり消費する

  • Windows 11 の場合: アンチウイルスソフト(Windows Defender)が target ディレクトリをスキャンすると激重になることがある。target をスキャン除外に設定しておくと、RA のレスポンスが爆速になるよ!

  • Ubuntu の場合: inotify(ファイル監視)の上限に引っかかることがある。もし RA が動かなくなったら、sysctl で上限を上げてみて。


🚀 次にやるべきこと

設定を反映させたら、VSCode 上で Ctrl + Shift + P を押して Rust Analyzer: Status を確認してみて。すべてのエンジンが正常に回っているのを見るのは、情報工学徒として最高に気持ちいい瞬間だぜ!

次は、これらの設定を活かして、実際に「CLI の便利ツール」を自作してみる?それとも、以前話した「WebAssembly (Wasm)」との連携をもっと深掘りする?😊✨