Rustの開発環境を作る(その2:Cargoを使う)
はいそこ、VimとかEmacsとか使ったほうがいいんじゃない?とか言わない。私、どっちのエディタも使いこなせない情弱なんですから。ただ、これを見てからVSCodeでよかったんじゃないの?と思ったのは内緒です。
もじゃった人がVSCodeでの環境構築をブログにしてくれています。現時点ではそっちの方がオススメです。
僕もRustの開発環境を作ってみました(VS Code編) - SHI-Zone
Rustのバージョンアップ
前回の記事を書いてから1.6にあがったらしいのでバージョンアップします。最新版のバイナリをダウンロードして上書きインストールするだけです。
Rustに同梱されているらしいので、Cargoを別途インストールする必要はありませんでした。ちゃんとパスも通ってます。
前回作ったプロジェクトをCargoプロジェクトにしてみる
前回、IDEAのプラグインを使ってプロジェクトを作りましたが、Cargoで作ったプロジェクトではないのでこのままではCargoを使ったビルドができません。これをCargoプロジェクトにしてみたいと思います。
プロジェクトの作成はcargo new
コマンドでやるようです。オプションにつけている --bin
がないと、ライブラリ用のプロジェクトテンプレートになって、エントリポイントとなるソースがmain.rsではなくlib.rsになるとのこと。試しにオプションのあるなしでからプロジェクトを作ってみましたが、違いはエントリポイントとなるソースがmain.rsからlib.rsに変わるのと、バイナリの場合はmain関数があることですね、それ以外の生成内容に違いはないです。 .git
と .gitignore
も合わせて生成してくれます。
さてさて、前回のプロジェクトですが Cargo.toml
がありません。また、バイナリのエントリとなるソースは hello.rs
となってます。ソースが一つしかないのにすでにCargoプロジェクトのデフォルトから外れております。
試すだけ試してみましょうか。。。
mao RustWorkspace $ cargo new RustOnIdea --bin destination `/Users/mao/Documents/RustWorkspace/RustOnIdea` already exists
ふむ。予想通りですね、なんか無理っぽいです。メッセージを見る限りは自分でcargo.tomlを作るしかないみたいですね。というわけで作りました。
[package] name = "rust-on-idea" version = "0.1.0" author = ["Shinsuke Abe <mao.instantlife@gmail.com>"] [dependencies] [[bin]] name = "hello" path = "src/hello.rs"
できました。ちなみに、 autor
プロパティは自動生成されたものからコピーしたのですが、Cargoコマンドはこれをどこから取得してるんでしょうか?git?
今の所プラグインがCargoに対応していないので、新しいプロジェクトを始める場合は先に cargo new
しておいてからIDEAで読み込むというのが良さそうですね。だったらVSCodeでRacer使う方が良いんじゃないか?という話もありますが目を瞑ります。
ビルド
とりあえずシェル経由ですね。ビルドしましょう。
mao RustOnIdea $ cargo build unused manifest key: package.author
こんな感じでビルドされます。
ところで、合わせてプロジェクト直下に Cargo.lock
というファイルが生成されます。実際の依存関係をCargoが管理するためのファイルのようです。バイナリをビルドするときは Cargo.lock
をgit管理下におけと書いてありました。ライブラリのときは、実際にライブラリを使うバイナリ側で Cargo.lock
を生成して管理するのでしょう。
まとめ
IDEA用のプラグインが発展途上なところがあって、補完については若干のストレスがありますが、シェルからCargoも使えますしそんなに複雑なプログラムを書いているわけではないので今の所は問題ありません。というか、今の所IDEAはただコード書くだけ。VSCodeで環境作り直したくなってるのは内緒。