Rust開発環境構築手順メモ

Macで[Rust](http://www.rust-lang.org/)の開発環境を整えたのでそのメモ。
**※※※ 2015/7/14時点のお話です ※※※**

# 環境
* Mac:OS X Mavericks
* Eclipse:Mars Release (4.5.0)
* Rust:1.1.0
* RustDT:0.2.2

# Rustのインストール
以下のコマンドでインストール

```bash
$ curl -sf -L https://static.rust-lang.org/rustup.sh | sh
```
ちゃんと入ってるか確認

```bash
$ rustc --version
rustc 1.1.0 (35ceea399 2015-06-19)
```
インストールされたモノはここにある。

```
/usr/local/lib/rustlib
/usr/local/share/doc/rust
```

# IDE
RustのIDEはどれもまだそれほど充実していない。
個人的にはIntelliJを使いたいのだけどコード補完もしてくれないのでパス。
今回はEclipseのRustプラグインである[RustDT](https://github.com/RustDT/RustDT)で環境構築する。

**※RustDTを使うには以下の条件を満たしている必要がある**

```
Eclipse 4.5 (Mars)以上
Java VM version 8 以上
```

## プラグインのインストール
1. 「ヘルプ」 > 「新規ソフトウェアのインストール」 > 「追加」
2. 「URL」に`https://rustdt.github.io/releases/`を入力
3. 表示される`RustDT Project`チェックボックスにチェック
4. OKとか同意とかポチりながら進める
5. Eclipse再起動

## 設定
1. 「Eclipse」 > 「環境設定」 > 「Rust」
2. 「Rust installation」 > 「ディレクトリー」に`/usr/local`を入力

**※上記の方法でRustをインストールした場合のディレクトリパスです**

## プログラムの実行
1. 「実行」 > 「実行構成」 > 「Rust Application」 > 「新規作成」（Wクリック or 右クリック）
2. 「名前」は任意、「プロジェクト」には実行したいプロジェクト、「プログラム・パス」にはCargoでビルドされた実行ファイル（例:`target/debug/hello_world`）をそれぞれ設定する
3. 実行

# コード補完
コード補完するには[Racer](https://github.com/phildawes/racer)というツールを使う。
ここでは引き続きEclipseでの設定まで。

## Racerの取得とビルド
現状以下のようにGitからクローンしてきてビルドするみたい。
任意の場所で実行。

```bash
$ git clone https://github.com/phildawes/racer.git
$ cd racer
$ cargo build --release
```

## Rustのソースコードを取得
1. Racerを動作させるにはRustのソースコードが要るみたいなので[ここ](http://www.rust-lang.org/install.html)からダウンロードする。
2. ダウンロードできたら展開して任意の場所に置く。

## Eclipseの設定
1. 「Eclipse」 > 「環境設定」 > 「Rust」
2. 「Rust installation」 > 「Rust 'src' Directory」に`{Rust配置Dir}/src`を入力
3. 「Racer Installation」 > 「実行可能ファイル」に`{Racer配置Dir}/target/release/racer`を入力

これでコード補完してくれるようになる。

# Debug
RustのデバッグはGDBで行う。

## GDBのインストール
homebrewでインストール。

```bash
$ brew install homebrew/dupes/gdb
$ gdb --version
GNU gdb (GDB) 7.9
...
```

## 証明書の作成と署名
[OS XでGDBを使う（ためにコード署名をする）](http://qiita.com/takahashim/items/204ffa698afe09bd4e28)
コレをそのまま進めればOK

## taskgatedの設定
`/System/Library/LaunchDaemons/com.apple.taskgated.plist`を開いて次のように編集する

```xml:com.apple.taskgated.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>POSIXSpawnType</key>
	<string>Interactive</string>
	<key>EnableTransactions</key>
	<true/>
	<key>Label</key>
	<string>com.apple.taskgated</string>
	<key>MachServices</key>
	<dict>
		<key>com.apple.taskgated</key>
		<dict>
			<key>TaskSpecialPort</key>
			<integer>9</integer>
		</dict>
	</dict>
	<key>ProgramArguments</key>
	<array>
		<string>/usr/libexec/taskgated</string>
-		<string>-s</string>
+		<string>-sp</string>
	</array>
</dict>
</plist>
```
変更したらMacを再起動する

## Eclipseでデバッグ
1. 「実行」 > 「デバッグの構成」 > 「{デバッグしたいタスク}」 > 「デバッガー」 > 「GDBデバッガー」にGDBの実行ファイルを指定（例:`/usr/local/Cellar/gdb/7.9/bin/gdb`）
2. 適当にブレークポイントを貼る
3. デバッグを実行

自分の環境ではこれでちゃんと止まった。

# 所感
正直、開発環境としてはまだまだ発展途上だなーと思った。
今後のアップデートに期待。
（IntelliJで開発したい！！！）

# 参考
http://www.inet88.co.jp/engineer-blog/rust_001
http://www.inet88.co.jp/engineer-blog/rust_002

# 変更履歴
2015/7/15
RustDTのv0.2.2が7/13にリリースされたことで、Eclipseが4.5(Mars)以上が必須になったようなのでちょこっと修正しました。