multirust で今日から始める快適 rust 生活
Rust 1.0 リリースおめでとうございます!!!!
Rust 1.0 がリリースされました!!!!めでたい!!!!!!
このリリースは非常に大きな一歩です。これまではコンパイラのバージョンが上がる度にコードを頑張って修正する必要がありましたが、今後はstable
な rustc
を使って作ったコードについては、将来にわたってもコンパイル可能で動作することが保証されます。
(機能の deprecation などはありますので、絶対的なものではありませんが、破壊的変更の頻度・度合いはこれまでよりもだいぶ控えめになるはずで、バージョンアップへの追従を諦めてしまうこと、いわゆる "Rust 疲れ" 現象は減ることが期待できます)
現時点での Rust を取り巻く環境の問題
言語の安定化により、サードパーティーのライブラリは今後どんどん充実していくと予想されます。Rust の将来はバラ色になるに違いないと筆者は信じていますが、1.0がリリースされたばかりの現時点ではまだまだ理想の状態には到達していないのが現実です。例えば、本日実施された Rust 1.0 Release記念祝賀LT会 では、多くの方が以下について困っていると訴えていました。
- 使いたいライブラリが unstable な機能を使っているため、stable なコンパイラではコンパイルできない
- 使いたいライブラリがしばらく更新されておらず、最新の
rustc
+cargo
ではコンパイルできない
これらを回避するためには、nightly/beta バージョンのコンパイラと stable バージョンのコンパイラを、プロジェクトごとに切り替えて利用する必要があります。もしかしたら、特定の日付の nightly build を利用する必要が出てきてしまうかもしれません。非常にめんどくさい作業ですね。
今すぐに Rust を活用したい、そんなあなたのためのツールが multirust
です。
multirust
のススメ
multirust
は、一言で言ってしまえば ruby
の rvm
、python
の pyenv
のようなもので、複数バージョン (リリースチャンネル) の Rust ツールチェイン (rustc
& cargo
) を簡単に切り替えて使えるようにするものです。
Rust の開発環境を整える方法としては、公式サイトに記載されている rustup.sh
を利用する方法 が有名ですが、multirust
を使う方法をオススメします。
(Rust のコアチームの一員の Steve Klabnik さんも 非Windows環境のユーザーについては multirust
の利用を推奨しています)
multirust
のインストール
以下コマンドをコピペするだけで multirust
のインストールは可能です (2015/5/16 現在。実際にインストールする際は README を読んで最新の手順を確認してください)。
curl -sf https://raw.githubusercontent.com/brson/multirust/master/blastoff.sh | sh
上記を実行すると、multirust
コマンドと nightly版の rustc
と cargo
がインストールされます (既に rustc
などがインストールされていると、衝突するかも?)。
multirust
の使い方
multirust
のインストール直後の状態では、 rustc
/cargo
コマンドを実行すると、nightly 版の各コマンドが実行されます。
あるプロジェクトについて、stable
版の rustc
/cargo
を利用したい場合、以下を実行します。
cd <path to project> multirust override stable
こうすることで、当該ディレクトリのパスとコンパイラバージョンの対応関係が記録され、当該ディレクトリで実行する rustc
/cargo
については、 stable
版が利用されるようになります (beta
版が使いたい場合は、 multirust override beta
とする)。
また、特定の日付の nightly
版を利用することもできます。
cd <path to project> multirust oberride nightly-2015-05-16
nightly
版のツールチェインについては日々の更新に追従する必要があるかもしれません。デフォルトでは multirust
をインストールした時点で最新の nightly が利用されますが、最新の nightly を利用するようにするためには、以下を実行して保存されているツールチェインを更新します。
multirust update nightly
毎日の nightly 更新作業が便利になりますね!
なお、チャンネル名を指定せず multirust update
する場合、nightly, beta, release の3チャンネル全てのコンパイラが更新されるそうです。
まとめ
multirust
便利!!!
詳しい話は multirust
の README によくまとまっているので読みましょう。