最近、ちょいとRustという言語が気になっているのでMac上に遊べる環境を作成してみたのでメモを残す。使用エディタはEmacs(今回は24.5)。


Rust本体のインストール

軟弱なので
Rustの公式ページ
ここからInstallをクリックして、Mac用のインストールパッケージをダウンロードしてインストールするだけ。これでRust単体で使えるようになるはず。

2016/5/31 追記

Ver1.9.0においてもMac用のインストールパッケージは署名されていないので、お使いのMacの設定システム環境設定のセキュリティからインストーラーの実行操作をする必要がある。

Ver1.9.0においても、以下の手順を元にで環境構築出来る事を確認済み。

Emacsへのrust-modeの導入

これまた軟弱なので、

M-x package-install

でrust-modeを選択してインストール。

flycheck-rust(文法チェッカ)の導入

毎度おなじみ軟弱なので、package-installからflycheck-rustを選んで導入。もしflycheck自体を使ってなかった場合はflycheckの導入から。flymakeを使ってたりするのであればそちらでどうぞ。

ここまでの確認

これでシンタックスハイライトとか文法されるようになる。試しに

fn main(){
    println!("test");
}

とか打ち込んで、シンタックスハイライトを確認。flycheckのアラートはたまに馬鹿な時があるけど、まぁ気にしない(笑)

quickrunの導入(未導入かつ必要なら)

結構いろんな言語に対応してくれているquickrun。ソース適当に書きながら切りの良い所で実行確認するのに便利。
軟弱なのでこいつもpackage-installからquickrunを選択して導入。
導入完了したら適当なソース(例えば上記のtest.rs)を書いて

M-x quickrun

で実行結果が表示される(コンパイルエラーがあれば、エラーが表示される)。
これから学習してく所なので、スニペットレベルで実行出来ると色々捗りそう。

racer(コード補完)の導入

racerは本体のコマンドと、Emacsから利用するElispの二系統に分かれる。

事前準備

利用にはRustのソースコードが必要なので
Rustのダウンロードページ
からソースのTarballをダウンロードして、適当な場所(今回は/usr/local/src/)に展開しておく。

Rustのダウンロードとビルド

次に、racerのサイトからGitでracer本体のクローンを行う。今回は/usr/local/rust/にクローンした。

git clone https://github.com/phildawes/racer.git

Git使ってない人(はRust試そうと思わないか?)はZipダウンロードして展開してもよい。
ダウンロードが終わったら、当該ディレクトリに移動した後

cargo build --release

でビルドを行う。ビルドが完了したら、/usr/localあたりに丸ごとmvしておく(この辺は個々の環境の好みで調整してください)。

環境変数の設定

racerにrustのソースの場所を教えてあげるため、.bash_profileあたりに

export RUST_SRC_PATH=/usr/local/src/rustc-1.1.0/src

を追加してsource .bash_profileで反映する。展開先が違う場合は適宜書き換えて下さい。

elispの配置

僕はelispはまとめて配置したい人なので、.emacs.d/配下のディレクトリにracer/editors/emacs配下をracerという名前でフォルダ丸ごとコピーしました。load-pathが及ぶ場所なら、お好みで配置すれば良いと思います。

init.elに環境系の設定追加

elispの配置が終わったら、以下のように設定を加えました(racer.elの配置場所には既にload-pathが通っている前提)。

(setq racer-rust-src-path "/usr/local/src/rustc-1.1.0/src/")
(setq racer-cmd "/usr/local/racer/target/release/racer")
(eval-after-load "rust-mode" '(require 'racer))

こいつも配置場所によっては、適当にパスを変更して下さい。

fook設定の追加

rustのソース開いた時に補完と定義ジャンプが有効になるように、以下の設定を追加。

(add-hook 'rust-mode-hook 
  '(lambda () 
     (racer-activate)
     (local-set-key (kbd "M-.") #'racer-find-definition)
     (local-set-key (kbd "TAB") #'racer-complete-or-indent)))

これで補完と定義ジャンプが使えるようになったはず。

ちょいと確認

拡張子.rsのファイルを開いて


use std::

と入力後にTABを押して、補完ウィンドウが出てくればOK。これでここまでの設定は概ね終了。

ちょいと不便なとこ

racerで出てくる補完ウィンドウ、Ctrl系のカーソル移動が使えず、カーソルキーかマウスでの選択となっているようなので、ちょいと不便。。。

コメントいただいたので加筆(ありがとうございます!)

手元の環境では、M-n, M-p などで候補の選択ができます。多分、デフォルトのキーバインドだと思います。

おしまい

ここまでで適当にRust学習しながら遊べる最低限の環境は出来たと思います。ひょっとしたらここで導入したelispの前提となっているものがあるかもしれませんが、その時はごめんなさい。

广告
将在 10 秒后关闭
bannerAds