背景
Visual Studio Code(vscode)でRustコードを書く際、選択肢としてあるのが vscode-rust だったが、最近はあんまり実装に時間取れないからrls-vscode使ってね(意訳)という事なので、そちらを使うことにする。
注意
RLSは2017/12月現在まだα開発段階なので、仕様が変わる場合や、致命的なエラーが出る場合もあるので注意。
何かあったら、rustup update nightly
で取得できる最新版で直るのを待つか、ソースから何とかするしかない。
Rust Language Server(RLS)とは
言語開発をする上で、IDEやエディタに補完機能、構文解析等の機能を統一的に提供するために定められた language server protocol のRustのための実装。
公式リポジトリは https://github.com/rust-lang-nursery/rls
2017/12現在ではまだnightlyだが、安定版リリースは2018年前半を目標としているらしい
用意するもの
- Visual Studio Code
-
rustup
- http://qiita.com/chikoski/items/b6461367e8c3875bb235 を参考に
- RLSが2017年12月現在でnightlyのものしかないので、nightlyツールチェインをinstallしておくこと
- インストールさえしてしまえば、他のツールチェインでも大体使用可能(詳細は未調査)
- rls-vscode(vscodeのrustプラグイン)
RLSのインストール
RLSがrustupに対応したので、rustupのみでインストール可能
現在RLSは開発段階のものなので、正式なリリースは存在しない。そのため、ツールチェインはnightlyのものを使用する必要がある。
大体公式リポジトリの説明に書いてある内容。
-
rustup update nightly
を実行してツールチェインをアップデートする -
rustup component add --toolchain=nightly rust-analysis
で、標準ライブラリのメタデータを取得 -
rustup component add --toolchain=nightly rls-preview
でrls本体をインストール -
rustup component add --toolchain=nightly rust-src
で、rust本体のソースをDLする- 標準ライブラリのコード補完に必要で、gitから落としたソース( https://github.com/rust-lang/rust )があるならば必要ない
成功すれば、rustup run nightly rls
を実行すると、rlsプロセスが起動する。(Ctrl+Cで停止)
コンポーネントの更新は、rustup update nightly
で一括更新される
vscodeプラグインの設定
ほとんどデフォルトで動作するが、rust.cfg_test
は、テストプロジェクトがある場合はtrueにしておかないと、テストコードを解析してくれないので注意。
確認方法
- コマンドプロンプトで、
cargo new --bin [プロジェクト名]
で新規プロジェクトを作成 - ディレクトリが作成されるので、vscodeでフォルダを開く
- .rsファイルを開いた時、下の方に
RLS: done
という表示が出ればOK
プラグインとRLSからの出力メッセージは"Rust Language Server"で確認可能。
詳しいメッセージが欲しい場合は、rust-client.revealOutputChannelOn
を設定する。
RLSの設定項目
まだ予告なしに変わるかもしれない段階なので、ここでは詳細に書かないが、
https://github.com/rust-lang-nursery/rls/blob/master/README.md の"Configuration"節を参考にしてRLSの挙動を制御できる。
基本的にはsettings.jsonに対応する項目があるので、それを設定する。
注意点
2017/12現在、Cargo.tomlで指定したような外部crateへの定義ジャンプは可能だが、標準ライブラリにはジャンプできないので、
ウェブのドキュメントを合わせて読むようにすると良い。
rls-previewが消える場合
nightlyの取得タイミングによっては、rls-previewが消えるらしいとのこと。
https://github.com/rust-lang-nursery/rls/issues/611
現在根本的な解決策を考えている段階らしいので、とりあえずの対処法を記しておく。
- rls-previewが存在するバージョンを探す(記事執筆時点で確認されているのは
nightly-2017-12-01
) -
rustup install [確認したバージョン]
を実行して、特定バージョンのツールチェインを入れる -
rustup component add rls-preview rust-src rust-analysis --toolchain [確認したバージョン]
で必要コンポーネントをインストールする - vscodeのユーザー設定ファイルを開き、
rust-client.channel
の値に、確認したバージョンを入れる
どのバージョンが有効か、という効率の良い特定方法は現在調査中。
使ってみた感想
コード補完、文法エラー、定義に移動等、必要と思う機能は一通り揃っているため、割と制約が多いrustでは多いに開発の役に立つのではないかと思う。
ただし、メソッドチェーンでつなげた場合の補完がうまくいかなかったりなど、VSに慣れているとちょっと不便だなという所もまだある。
早く正式リリースになってほしいなぁと思う。