multirustのメモ

## 前提
| 項目 | 説明 |
|----|-------------------------|
| OS | MacOSX 10.11.2 |
| Rust | 1.7.0 stable |
| 検証日時 | 2016.03.25              |


[rustup](https://github.com/rust-lang-nursery/rustup.rs)に乗り換えました。（2016.05.29追記）

## インストール
```
$ brew install multirust
$ multirust
Usage: multirust <command> [--verbose] [--version]

Commands:

    default          Set the default toolchain
    override         Set the toolchain override for the current directory tree
    update           Install or update a given toolchain
    show-override    Show information about the current override
    show-default     Show information about the current default
    list-overrides   List all overrides
    list-toolchains  List all installed toolchains
    remove-override  Remove an override, for current directory unless specified
    remove-toolchain Uninstall a toolchain
    run              Run a command in an environment configured for a toolchain
    delete-data      Delete all user metadata, including installed toolchains
    upgrade-data     Upgrade the ~/.multirust directory from previous versions
    doc              Open the documentation for the currently active toolchain
    which            Report location of the currently active Rust tool.
    help             Show help for this command or subcommands

Use `multirust help <command>` for detailed help.
$ multirust --version
multirust 0.7.0 (b222fcd27 2015-09-24 10:53:38 -0700)
```

デフォルトのツールチェインを設定。もし指定したツールチェインがない場合はインストールもする。

```
$ multirust show-default
multirust: no default toolchain configured. run `multirust help default`
$ multirust default stable
multirust: using existing install for 'stable'
multirust: default toolchain set to 'stable'
```

で、確認。

```
$ multirust show-default
multirust: default toolchain: stable
multirust: default location: /Users/force/.multirust/toolchains/stable

rustc 1.7.0 (a5d1e7a59 2016-02-29)
cargo 0.8.0-nightly (28a0cbb 2016-01-17)
```


## オーバーライド
設定するとディレクトリ毎にデフォルトのツールチェインを上書いて、設定できる。
設定しなければデフォルトのツールチェインを使う。

```
$ mkdir hoge && cd hoge
$ multirust show-override
multirust: no override
multirust: default toolchain: stable
multirust: default location: $HOME/.multirust/toolchains/stable

rustc 1.7.0 (a5d1e7a59 2016-02-29)
cargo 0.8.0-nightly (28a0cbb 2016-01-17)
```

`no override`になってるので、`nightly`にしてみる。

```
$ multirust override nightly
multirust: using existing install for 'nightly'
multirust: override toolchain for '$HOME/hoge' set to 'nightly'

$ multirust show-override
multirust: override toolchain: nightly
multirust: override location: $HOME/.multirust/toolchains/nightly
multirust: override reason: directory override for '$HOME/hoge'

rustc 1.9.0-nightly (98f0a9128 2016-03-23)
cargo 0.10.0-nightly (61ad6a0 2016-03-22)
```


## オーバーライドの一覧
```
$ multirust list-overrides
/path/to/hoge;nightly
```


## ツールチェインを指定して何かを実行したい
```
$ multirust run nightly cargo build
```


## toolchainのアップデート
```
$ multirust update
```
各ツールチェイン(`stable`,`beta`,`nightly`)自体の更新。
multirustインストール直後は何もないので実行しておく。
あとはメジャーバージョンアップした時、nightlyがっつり追いかける人は1日1回くらい実行しておくと良い。


## ドキュメントを見る
```
$ multirust doc
```
現在のツールチェインのドキュメントをブラウザで開いてくれる。


## multirust自体のデータ更新&削除
```
$ multirust upgrade-data
$ multirust delete-data
```

`delete-data`は特に慎重に。


## Zsh補完関数
必要であれば[Zsh補完関数](https://github.com/zsh-users/zsh-completions/blob/master/src/_multirust)も入れる。
色々と補完がきく。