日曜プログラミング

休日趣味でやってるプログラミング関連記事をダラダラと

Rust 開発環境構築 - Eclipse で構築してみた

LifeTime や Trait、関数型プログラミング的な事も可能らしいシステムプログラミング言語辺りの ワードが気になって Rust を始めてみようと思いたった。

で、まずは環境構築からと言う事で探してみた。


開発環境選定

タイトルにも入れてるが今回は Eclipseプラグインで提供されている RustDT を選ぶことにした。 デバッグ機能が頭一つ抜けていると思ったため。

定義ジャンプ・コード補完・色付け辺りは大体どの環境も備えてて、gdbコマンドラインでガシガ シ使える人ならどれを選んでもそんなに機能差は無いと思う。

以下各環境を少し調べた雑感。

Emacs

  • 個人的には手を切りたいエディターというのはさておき
  • 例によって色々モードはあり設定も今はさほど面倒でもない
  • GDB とのデバッグ連携もかなり GUI っぽくなってるんだが 見た目がもはや他の IDE よりも煩雑になってる感じなのでスルー

IntelliJ

  • こちらもプラグインがあるのだが軽く情報を探った感じデバッガ連携が見当たらなかったので見送り
  • サイトを見ただけで試してはいない

VisualStudio

  • Visual Rust というプラグインがある
  • が、補完が何故か予約語しか効かないので見送った
  • デバッガ連携可能かどうかは未確認

Eclipse

  • RustDT というプラグインがあり、gdb との連携も可能らしい
  • 他の環境が備えている機能は大体持っている
  • 今回はこれを試した

他にもいくつか見かけたが未確認。

事前環境

  • MinGW-w64
    • RustDT で gdb を使うのに必要
    • 自分は Git for Windows SDK 1.0.3 経由で入れた
      • 時間はややかかるが必要なの一式ほぼ勝手に入れてくれるので楽
  • Rust 1.8.0 GNU ABI
    • Windows だと MSVC ABI もあるのだが、GNU ABI でないと RustDT が連携している GDBデバッグ情報を認識してくれない為
  • racer
    • コード補完を受け持つ外部ツール
    • 一番楽なのは Rust 入れた後 cargo install racer とコマンド打つだけ
  • Rust のソースを DL、環境変数 RUST_SRC_PATH にソースを展開したパスを指定してある事
    • racer で必要

結構事前準備が必要なんだけどどれもさほど面倒でもないのと記事を書いた時点では 既に導入してしまっていたので割愛。

Eclipse, RustDT インストール

とは言っても、既に ブログ記事 があったので基本はそこに従った。

ただ、事前環境でも書いたが、Rust は GNU ABI の方を入れる事。

デバッグ動作確認

こんなコードを書いた。*1

fn main() {
    let a = 10;
    let b = 20;
    let c = "こんにちわ";
    
    println!("{}, {} 年後の世界!", c, add(a, b));
}

fn add(x: i32, y: i32) -> i32 {
    x + y
}

んで2行目にブレークポイント設定してデバッグ実行。ブレークポイント設定は行表示している辺りを ダブルクリックすれば設定される。

んでブレークした所にも止まるし、ステップ実行も可能なんだけど変数を見る時 数値はいいんだが文字列は C/C++ 同様パッと見た感じさっぱり分からん。

ここ に書かれていた事を頼りに gdb の Rust pretty-printer を導入してみたが 文字列は対応してないっぽい。

文字列の簡単なデバッグ方法が今後の課題だけどとりあえずは しばらく RustDT を使いつつ勉強してみよう。

*1:何も調べず書いたけどはてなブログって既に Rust のシンタックスハイライトも対応してたのね