Spacemacsで、Rustのそれなりの開発環境を立ち上げてみます。
※ 記事中の SPC
は Emacsキースタイルを使っている人は M-m
に読み替えてください。
Rust まわりのツールチェインのインストール
rustup
rustのインストールを管理してくれる、rustup (rbenvみたいなの)を入れます。
$ curl https://sh.rustup.rs -sSf | sh
これで基本のツール(rustc, cargo など)は入ります。
MacだとHomebrewでもrustは入りますが、色々考えるとrustupのほうがお得そうです。(Homebrewでrustupが入るようになると一番いいですね。)
cargo install
コマンドでインストールしたツールにパスが通るようにシェルに追加しましょう。
$ echo 'source $HOME/.cargo/env' >> ~/.profile
rustfmt
Rustのソースコードフォーマッタであるrustfmtを入れます。
$ cargo install rustfmt
racer
Rustのコード補完ツールであるracerを入れます。
$ # 本体インストール
$ cargo install racer
$ # racerのためにRustのソースコードを追加
$ rustup component add rust-src
$ # パスの確認
$ echo ~/.multirust/toolchains/*/lib/rustlib/src/rust/src
/Users/owner/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src
$ # パスを追加
$ echo "export RUST_SRC_PATH='$(echo ~/.multirust/toolchains/*/lib/rustlib/src/rust/src)'" >> ~/.profile
$ # インストールチェック
$ bash -l
$ racer complete std::io::B
MATCH BufReader,46,11,/Users/owner/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/io/buffered.rs,Struct,pub struct BufReader<R>
MATCH BufWriter,298,11,/Users/owner/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/io/buffered.rs,Struct,pub struct BufWriter<W: Write>
MATCH BufRead,1198,10,/Users/owner/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/io/mod.rs,Trait,pub trait BufRead: Read
MATCH Bytes,1588,11,/Users/owner/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src/libstd/io/mod.rs,Struct,pub struct Bytes<R>
Emacs側のインストール
- まずはSpacecmacsを入れましょう。
-
~/.spacemacs
にRustレイヤー追加しましょう。
;; List of configuration layers to load.
dotspacemacs-configuration-layers
'(
;; ----------------------------------------------------------------
;; Example of useful layers you may want to use right away.
;; Uncomment some layer names and press <SPC f e R> (Vim style) or
;; <M-m f e R> (Emacs style) to install them.
;; ----------------------------------------------------------------
;; (... いろいろ...)
rust
)
- Emacsを再起動するか、
SPC(or M-m) f e R
を押してリロードさせましょう。
各種機能のチェック
Hello worldプロジェクトを使って 各種機能 の動作を確認します。
プロジェクトの新規作成
$ cargo new --bin hello
上記コマンドでもできるのですが、せっかくなのでEmacsからやってみましょう。
上記と同じようにプロジェクトを作るには、 M-x cargo-process-new
でOKです。
- プロジェクト名:
hello
- binプロジェクトか?:
yes
ただ、普通にコマンドラインから作成で十分ですね。
文法チェック (flycheck)
*.rs
ファイルで編集・保存していれば勝手に文法チェックが行われますが、 C-c !
+ 次のキー
にて明示的に文法チェッカ(flycheck) の機能を呼ぶことができます。
ここでは C-c ! l
でエラーの一覧を出してみましょう。
補完機能 (racer + emacs racer)
変数に型の情報があれば、普通に補完がでてきます。
ほか下記の機能があります。
M-. 定義へジャンプ
M-, 定義からバック
M-x racer-describe 定義を別バッファに表示
ソースコードフォーマッティング (rustfmt)
M-RET =
でフォーマットできます。
cargo
cargo
コマンドでプログラムを実行してみましょう。
SPC m c x
でmainを実行することができます。
-*- mode: cargo-process; default-directory: "~/.emacs.d/.cache/junk/2016/11/hello/src/" -*-
Cargo-Process started at Tue Nov 29 13:02:59
cargo run
Blocking waiting for file lock on build directory
Compiling hello v0.1.0 (file:///Users/owner/.emacs.d/.cache/junk/2016/11/hello)
Finished debug [unoptimized + debuginfo] target(s) in 0.46 secs
Running `/Users/owner/.emacs.d/.cache/junk/2016/11/hello/target/debug/hello`
Hello world
Cargo-Process finished at Tue Nov 29 13:02:59
ほかユニットテストの実行などもサポートしているようです。 ( SPC m c
+ 次のキー
)