Rustを学んでいく上で、分からなかった単語を調べたので備忘録として投稿です。
分からないことが沢山出てくるので、Part2に続く予定。分からないことが出るたびに、この投稿に追加していっても良いのですが、モチベーション的に記事が増えてく方が嬉しいので。
cargo
Rustのビルドシステム兼パッケージマネージャ。
Rustを使う際にはこちらも必須となる。
以下コマンド例
//プロジェクトの作成。hello_world_projectフォルダ配下に必要なファイルが作られる。
cargo new hello_world_project
//プロジェクトのビルド。実行可能なファイルが作成される。target\debug配下にhello_world_project.exeが作られる。
cargo build
//ビルドしたファイルを実行する。
.\target\debug\hello_world_project.exe
//プロジェクトのビルドと実行を行う。実行可能なファイルがあり、ファイルが変更されてない場合はビルドは飛ばす。
cargo run
//コンパイル可能か確かめる
cargo check
//リリース用のビルドを行う。target\release配下に実行可能ファイルを作成する。最適化する関係で、コンパイルに時間がかかるため普段は使わない。
cargo build --release
//クレートをインストールする
cargo install cargo-edit
参考: https://doc.rust-jp.rs/book-ja/ch01-03-hello-cargo.html
クレート
英語表記はcrate。
他言語では一般的に、「ライブラリ」「パッケージ」と呼ばれるもの。
クレート追加は以下のようにcargoを用いて行う。
cargo install cargo-edit
rustup
Rustプロジェクトが公式に提供しているインストーラーのこと。
Rustのツールチェーンをインストールする際に、rustupコマンドにてインストールできるようになる。
例えば以下のようなコマンドで、Cargo、rusttcなどをインストールする。
rustup component add rls rust-analysis rust-src
Language Server
※Rust特有の話ではない
rustではRust Language Serverやrust-analyzerを使う。
2021現在では、rust-analyzerを使う方が良い様子。後述参考サイト。
Language Serverとは、VSCodeなどのIDEが提供しなくてはいけない「補完機能」や「型の表示」を行うためのプログラムのこと。
Language ServerにむけてLanguage Server Protocolで定められたJSON方式でリクエストを送れば、Language Serverから必要な情報が返ってくる。
何が良いかというと、IDEで補完機能などをサポートしたいとき、IDE固有に実装をする必要が無くなる。エディタはエディタとしての機能を追求すればよく、補完などの機能は外部のLanguage Serverに任せれば良いというわけだ。
参考:
とても分かりやすいQiita記事: https://qiita.com/atsushieno/items/ce31df9bd88e98eec5c4
rustのデバッグについて載っているQiita記事(こちらでもrust-analyzer): https://qiita.com/legokichi/items/e2f807f70316a916f4be
その他radditでrust-analyzerの方が良いと書かれている記事があったが、Qiitaでは何故か投稿に含められなかったので載せていない。