Rustをnvim上で使うためのセットアップをしてみた

担当プロジェクトにRust製のコードが入りました。そもそもRustの動作環境が整っていなかったので準備をし、ついでにnvimで快適になるようにしてみました。
2021.02.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

現在担当しているプロジェクトはこれまで主に Python・TypeScript・Scala(Java)の3言語を利用していました。大体はAWSを使う上での利便性が理由です。そして、先日Rustも加わることになりました。

Rustが動作する環境ではなかったためセットアップを行いつつ、vim上で快適に利用するためのプラグイン導入についても記録しておきます。

Rustのセットアップ

DevIOで既にセットアップの記事が上がっていましたが、現在推奨されている方法に変更はないようです。

Rust用vimプラグインの導入

デファクトスタンダードなプラグインがいくつかありますが、今回は2つに絞ります。

rust.vim

メジャーなプラグインとしてはrust-lang/rust.vimがあります。

dein.tomlに記述する場合は以下のようになります。

[[plugins]]
repo = 'rust-lang/rust.vim'

特に挙げるような設定項目はありません。オプションとしてPlaypenとの連携設定も可能です。

neoclide/coc-rls

そしてもう一つ。coc.nvimベースで動作するneoclide/coc-rlsです。coc.nvimについては以前にcoc-metalsを取り上げた際に触れています。

まずはrustupで依存ライブラリをインストールします。

rustup component add rls rust-analysis rust-src

その後、coc-rlsをインストールします。

:CocInstall coc-rls

Install finished-
 ✓ coc-rls Installed extension coc-rls@1.1.6 at /Users/XXXXXX/.config/coc/extensions/node_modules/coc-rls

初期設定にて以下の要素が有効になっているため、インストールした直後でも不自由はありません。

  • syntax-highlight
  • ポップアップコンテキストでのtips表示
  • DYLD_LIBRARY_PATHとLD_LIBRARY_PATHの指定
  • rustupのパス設定
  • warningsの表示
  • racerを利用したコード補完
  • cargoによる--all-target指定でのチェック

保存時に整形したい場合には、:CocConfigにてformatOnSaveFiletypesにrustを追加しておきましょう。

{
  "coc.preferences.formatOnSaveFiletypes": [
    "rust"
  ]
}

あとがき

利用する言語の増加は依存ライブラリの増加も意味しています。個人的には整合性が取れつつ、テストによるカバレッジが取れていれば問題ありません(過去の職場経験上phpとCOBOLは除く)。

社内でRustの利用者を周りで多く見るようになりつつ、業務での利用も増えてきました。個人的にはPythonの言語仕様に煩わしさを感じることが多いほど比較的刺さる面が多い言語仕様だと思ったので、気になる方は触ってみることをおすすめします。

参考リンク