Rust Language Server(RLS)は,コードの自動補完,goto定義,再フォーマットなどの機能を備えたツール開発の支援を目的とする。実際のプロジェクトでの使用とフィードバック提供のために今回,アーリーアダプタ向けのアルファ版が公開されることになった,とプロジェクトの代表的なコントリビュータのひとりであるJonathan Turner氏が書いている。
ソースコードに関する情報を収集するためにRust Language Serverは,Rustコンパイラの他に,Rustコードの補完機能を提供するRacerを使用する。コンパイラはその定義上,プログラムに関する情報の最も信頼できる提供源だが,現行のRustにはインクリメンタルコンパイル機能が欠如しているため,動作が遅過ぎる場合のあることが問題だ。それに対してRacerは,ほぼすべての場合において高速だ,とTurner氏は言う。しかしながら,マクロが扱えない,ジェネリックタイプのサポートが部分的である,といった制限もある。この理由からRLSでは,コンパイラとRacerの両方に問い合わせを行なうことで,許容される時間内で最も正確な情報の提供を実現しているのだ。このプロセスを可能な限り効率化するため,RLSは,コンパイラやRacerをシェル経由でコントロールせず,その両方をリンクしている。
現在リリースされているRLSは,次の機能をサポートする。
- 自動補完
- goto定義
- シンボルへのgoto
- すべての参照の検出
- 名前変更とリファクタ
- ホバーによる型表示
- エラー内容
RLSの大きな特徴はMicrosoft Language Server Protocol (LSP)を採用していることだ。このプロトコルはIDEやテキストエディタなどのクライアントと言語サーバとの間に,標準化された通信手順を確立する。このためRLSは,Visual Studio CodeやEclipse,Che,Emacsといった,Microsoft LSPをサポートするさまざまなIDEやエディタで利用することが可能だ。Microsoft Studio Codeの場合であれば,プラグインをインストールすることで使用することができる。プラグインがインストールされると,Visual Studio Codeが言語サーバを自動的に起動し,Rustの高度な編集機能がサポートされるようになる。
現時点では開発初期段階であるため,実用の域には達していないが,CargoベースのほとんどのRustプロジェクトで利用可能になるだろう,とTurner氏は述べている。インストールは以下のコマンドを実行すればよい。
git clone https://github.com/jonathandturner/rls
git clone https://github.com/jonathandturner/rls_vscode.git
cd rls_vscode
npm install
export RLS_ROOT=/Source/rls
その後にVS Codeを起動する。ビルドに必要な依存関係はナイトリービルドのrust/cargo,git,python,node,cmakeだ。
この記事を評価
- 編集者評
- 編集長アクション