Rust 環境構築 - Emacs & VS Code

昨年末から少しずつ Rust に入門してます。日本語版チュートリアルが読みやすくてありがたいです。

doc.rust-jp.rs

メモリ安全、マルチパラダイム、システムプログラミング言語で WebAssembly にも対応とか色々特徴はありますが、C++ に馴染んでいると入りやすい気がします。まだ使い途は見えてませんが、新しい言語を学ぶのは興味深いものです。

EC2 インスタンス(Ubuntu 18.04.1) で Emacs の Rust 環境を構築してみました。

Rust のインストールは公式サイト通り

www.rust-lang.org

$ curl https://sh.rustup.rs -sSf | sh

で導入して、PATH の設定をします。

Ubuntu に Emacs をインストールするとちょっと古い Emacs 25 が入ってしまうのでリポジトリを追加して Emacs 26 を導入。

$ sudo add-apt-repository ppa:kelleyk/emacs
$ sudo apt install emacs26

最近 VS Code ばかり使っていて Emacs 知識をアップデートしてませんでしたが、久々に設定を見直しました。require によるパッケージロードを use-package に移行。これにより、パッケージが導入されていない場合 Emacs の起動処理がエラー中断されることなく継続されます。複数環境で Emacs 設定を共有したい場合にこの振る舞いが役立ちます。

www.emacswiki.org

コード補完はずっと auto-complete 使ってましたが、開発が活発な company にスイッチ。UI はちょっと IDE っぽい見た目です。

company-mode.github.io

RLS (Rust Language Server) を使える rust-mode の fork である rustic を使おうとしたのですが、自分の環境ではうまく動作せず。rust-mode と racer を使いました。

$  cargo install --version 2.0.13 racer

racer のバージョンを指定しないとビルドエラーになりました。

rust-src を追加します。

$ rustup component add rust-src

Emacs では、rust-mode, racer を package-install して、init.el に設定を追加

;; rust-mode
(use-package rust-mode)
(add-to-list 'exec-path(expand-file-name "~/.cargo/bin/"))
(add-to-list 'auto-mode-alist '("\\.rs\\'"  . rust-mode))
(add-hook 'rust-mode-hook #'racer-mode)
(add-hook 'racer-mode-hook #'eldoc-mode)

コード補完などが効くようになりました。

VS Code では、Rust(rls) 拡張をインストールするだけで、rls のインストールも自動で環境を整えてくれます。とても楽です。

marketplace.visualstudio.com