13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MacとEmacs(24.5)でのRust学習環境作成

Last updated at Posted at 2015-08-07

最近、ちょいと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を使ってたりするのであればそちらでどうぞ。

ここまでの確認

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

test.rs
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の前提となっているものがあるかもしれませんが、その時はごめんなさい。

13
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?