RLSの廃止に伴い、本ツールは役割を終えました。
アーカイブ
Cargo-rls-install
どんなツール?
開発経緯
Rustには、言語の開発状況に応じたStable(正式)、Beta、Nightly(毎晩日替わり)という
3つのチャンネルがあります。
StableとBetaチャンネルにRLSをインストールすることは、いつでもrustupコマンドを
使うことで可能ですが、Nightlyチャンネルだけは、Rust Language Server(RLS)が
正常にビルドできた日のみ、インストールすることができます。
これは、Rust Language Server(RLS)が依存関係にあるClippyという
Rust言語のコーディング支援ツールが、Rust言語の目まぐるしい変更に
付いて行けず、毎週のようにバグが生まれ、ビルドできない日があるため、
その日は、RLSも一緒に壊れてしまうためです。
このため、利用可能なRLSを探す方法を一人ひとりが、調べてコマンドを打つのでは、
非合理的だと考えたので、開発に至りました。
#インストール方法
$ cargo install cargo-rls-install
Cargoは、Rust言語に付属しているため、インストール前には、
Rust言語をインストール済みである必要があります。
また、Linux系OSでは、事前にOpenSSLをインストールしている必要があります。
OpenSSLのインストール方法
#Debian系(Ubuntu、Raspbianなど)
$ sudo apt install libssl-dev
# Windows Subsystem for LinuxのまっさらなUbuntu18.04に
# インストールする場合は、追加で2コマンド必要。
$ sudo apt install build-essential
$ sudo apt install pkg-config
#RedHat系(CentOSなど)
$ sudo yum install openssl-devel
#Fedoraなど
$ sudo dnf install openssl
特徴
-
Rustの3つのチャンネル(stable/beta/nightly)のRLSのインストールに対応しています。
-
Cargo(Rustのパッケージマネージャ)から、__1コマンド__でインストールできます。
-
Cargoコマンドの__サブコマンド__(
$ cargo <自身が付けたコマンド名>
で実行できる仕組み)なので
細かいコマンド名を忘れていても$ cargo list
と打てば、名前が出てきます。
使い方(Nightly -> Stable -> Betaの順で説明します。)
Nightly Rust向けのコマンド
# Nightly RustとRLSをインストール(各コマンド実行の直前にyes/noを選択)
$ cargo rls-install -n
# 又は
$ cargo rls-install --nightly
# Nightly RustとRLSをインストール(最後までyesを打った扱いで処理)
$ cargo rls-install -ny
Stable Rust向けのコマンド
# Stable RustとRLSをインストール(各コマンド実行の直前にyes/noを選択)
$ cargo rls-install -s # 又は --stable
Beta Rust向けのコマンド
# Beta RustとRLSをインストール(各コマンド実行の直前にyes/noを選択)
$ cargo rls-install -b # 又は --beta
チャンネル選びは迷ってしまう方向けのコマンド
$ cargo rls-install -y
* Select channel
[0:stable, 1:beta, 2:nightly] -> *チャンネル名(stable/beta/nightly)を入力する*
一週間のビルド状況表示コマンド
現在、デフォルトで使われているRustツールチェインと
一週間のビルド状況が表示されます。
$ cargo rls-install -v
* Default use Rust toolchain: nightly-2019-05-12
* Rust information
---------------------------------
| Rust & RLS status |
---------------------------------
| Build date | Status |
---------------------------------
| nightly-2019-05-06 | present |
| nightly-2019-05-07 | present |
| nightly-2019-05-08 | present |
| nightly-2019-05-09 | present |
| nightly-2019-05-10 | present |
| nightly-2019-05-11 | present |
| nightly-2019-05-12 | present | <= Installed
---------------------------------
| Last available: 2019-05-12 |
---------------------------------
End
rustup component addのラッパーコマンド
主に、rustfmtのインストールする際に、rustup component add rustfmt --toolchain XX
を
書くのが面倒だったため、追加した機能です。
$ cargo rls-install -c [コンポーネント名(例: rustfmt)]
# 又は
$ cargo rls-install -f # rustfmtをインストールします。
参考にしたサイト等
GitHub - mexus/rustup-components-history
GitHub Pagesを使って、公開されているこのページがあったから、
本ツールを作ることができました。
もし、無くなってしまったら、このツールは使えなくなります。
RLSが使えるかを表示する似たようなページもありますが、
昨晩のビルド結果を表示するだけのこのページでは、月に数回、3日以上、
壊れたままの状態になるClippy(Rustのコード解析・補完ツール)と
それに依存するRLSの最新版を探すことができません。
朗報、2019年3月9日にRustの公式リポジトリへ取り込まれたため、
将来的に無くなる可能性はほぼ0になりました。(2019年3月10日追記)
Rust Language Server(RLS)でVisual Studio Codeの補完を行う(Qiita記事)
本ツールは、この記事を見て、何か最新版のRLSを使い続ける良い方法が
無いかを考えた末の回答です。
cargo-version-sync の紹介(Qiita記事)
本ツールがStructoptを使っているのは、cargo-version-syncのソースコードの影響です。
Rustのイテレータの網羅的かつ大雑把な紹介(Qiita記事)
この記事がなかったら、イテレータを率先して、使っていなかったかもしれません。
Rust公式のイテレータ解説ページは、読み込みに時間がかかり過ぎて、
ユーザビリティが全くありません。
追記
Nightly RustにRLSをインストールして、例えば、Visual Studio Code(VSCode)の
拡張機能であるRust (rls)で使う際には、拡張機能の設定を変える必要があります。
"rust-client.disableRustup": true
この設定により、cargo-rls-installで新しくインストールした
「nightly-YYYY-MM-DD」というフォーマットのツールチェイン名を
正しく認識して、RLSを起動できるようになります。