最近 Rust の環境を再構築したので、そのメモ。 とりあえず、Visual Studio Code(以下、VSCode) を使用して
- コード補完
- 定義元への移動
- シンボルへの移動
- ソースの自動フォーマット
- デバッグ
ができるようになった。 (OS は macOS Sierra で、XCode のバージョンは 8.1)
以下、構築手順。
Rust をインストール
まずは、Rust のツールチェーンマネージャーの、rustup をインストール。 下記のコマンドを実行し、インストールする。
$ curl https://sh.rustup.rs -sSf | sh
インストール後は、PATHに以下を追加。
$HOME/.cargo/bin
次に適当なプロジェクトを作成し、下記のコマンドを実行し、rust の nightly version を使用するように設定する。
$ rustup override set nightly
後述する racer で Rust のソースを参照するため、インストールした Rust のソースをダウンロードする。
$ rustup component add rust-src
上記のコマンドを実行すると、
`rustc --print sysroot`/lib/rustlib/src/rust/src
のディレクトリにソースがダウンロードされる。
次に、以下のツールをインストールする。 それぞれ、補完、フォーマット、シンボルへの移動で使用する。
$ cargo install racer
$ cargo install rustfmt
$ cargo install rustsym
VSCode の設定
以下のプラグインをインストールした。 * Rusty Code * LLDB Debugger
Rusty Code の設定
.vscode/setting.json に以下を記述する。
{
"rust.rustLangSrcPath": “<Rust のソースコードの場所>”,
"rust.formatOnSave": true,
"rust.checkOnSave": true,
"rust.checkWith": "build"
}
また、保存した際に自動で ```rustfmt``` で整形して欲しいので、``` rust.formatOnSave``` を true にした。
また、保存時には、ビルドもしたいので、```rust.checkOnSave``` と ``` rust.checkWith``` の設定もした。
シンボルへの移動は、macOS の場合、```cmd + shift + O``` で移動できる。
### LLDB Debugger の設定
次にデバッグ環境を構築する。
.vscode/launch.json に以下を記述する。
{
“version”: “0.2.0”,
“configurations”: [
{
“name”: “Debug”,
“type”: “lldb”,
“request”: “launch”,
“sourceLanguages”: [“rust”],
“program”: “${workspaceRoot}/target/debug/
デバッガを開始するためには、デバッグの画面を表示し、F5 を押すとデバッグを開始する。あとは、F9 でブレイクポイントを設定できたり、F10 でステップオーバーなどが実行できたりするので、デバッグ出来るようになる。
実際にデバッガを起動すると以下のようになる。watch なんかも普通に使えるし、変数をマウスオーバーすると内容が確認できたりする。
感想
VSCode なかなか良い。 特に、Rust のデバッグ環境は他の環境よりもいいような気がする。 他の環境だと、上手く動かなかったりしたので。。。 LLDB が Rust に対応したのが大きいのかも。