😎
Rust 1.42.0 環境で rust-analyzer を動作させる
現象
- Rust
1.42.0
環境で、rust-analyzer
が動作しない
以下は vim-lsp が取得した rust-analyzer
のエラーメッセージ。(改行は筆者が挿入したもの)
rust-analyzer: error: rust-analyzer failed to load workspace: Failed to find sysroot for Cargo.toml file \${ワークスペース}/atcoder/abc251/Cargo.toml.
Is rust-src installed?: can't load standard library from sysroot^@\$HOME/.rustup/toolchains/1.42.0-x86_64-unknown-linux-gnu^@(discovered via `rustc --print sysroot\\`)^@try installing the Rust source the same way you installed rustc
結論
# 自己責任で。
cd $HOME/.rustup/toolchains/1.42.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust
ln -sv src library
背景
- 私は AtCoder に Rust で参加している
- AtCoder の Rust環境は
1.42.0
である - 手元の環境も WSL上の Ubuntu で、
1.42.0
の環境としている -
rust-analyzer
は vim-lsp-settings によってインストールしたものを使っている- 執筆時:
rust-analyzer 5d5bbec9b 2022-05-09 stable
- 執筆時:
-
rust-analyzer
がrust-src
を見つけられないとエラーを吐くようになった
原因
-
rust-analyzer
が1.47.0
未満との差分を吸収する処理を消したため
対処方針
- 差分によると、
lib/rustlib/src/rust/src
を参照するか、lib/rustlib/src/rust/library
を参照するかの違いでしかない - 自己責任において、シンボリックリンクを貼って解決とした
Discussion
とりあえずエラーメッセージは出なくなったし、LSPとして利用できている状態。
より複雑な問題が発生したらそれはその時対応で。
記事と直接の関係はないですが、 VS Code の rust-analyzer 拡張 (rust-lang.rust-analyzer) の場合は
.vscode/settings.json
に{"rust-analyzer.server.path":"/path/to/rust-analyzer"}
とすることでこの問題を回避できます。その場合、
/path/to/rust-analyzer
には現象の発生しないバージョンの rust-analyzer が指定される認識でよいでしょうか。そのとおりです。
Windows PowerShell 環境での設定例: