🙆♀️
rustup, rustc, cargoの位置付けと違い
rustupとrustcとcargoそれぞれの関連性と違いがよくわからなかったので調べた備忘です。作成時点ではRust 1.72.0です。ざっくりなので間違っているかもしれません。
位置付け
- rustup (Rust環境管理: コンパイラ更新,コンポーネント管理,クロスコンパイル準備 等)
- rustc (コンパイラ)
- cargo (ビルドツール兼パッケージマネージャ)
- (標準ライブラリ, ドキュメント, 等)
調べた所感
-
rustup
はRust全体の管理担当でrustc
やcargo
等のコンポーネントは被管理対象-
cargo install
でもコンポーネント追加可能だが、rustup component add
の方が良さそう -
rustup component add
はバイナリDL、cargo install
はソースDL後ローカルでビルドされる違いがある
-
- 直接
rustc
を使用することはあまりなさそう - 普段は
cargo
の操作だけで完結しそう- new -> (add) -> run -> test -> doc -> build --release
よく使いそうなコマンド
-
rustup self update
: 最新バージョンのrustupに更新 -
rustup update
: 最新バージョンのRustに更新 (rustc, cargo, rustfmt等を更新) -
rustup component add <COMPONENT>
: コンポーネント追加 -
rustup target add <PLATFORM>
: ビルド対象プラットフォーム追加 -
rustc -V
: Rustバージョン表示 -
cargo new <PATH>
: PATHにRustプロジェクトディレクトリを作成,構成する -
cargo init
: カレントディレクトリをRustプロジェクト用に構成する -
cargo search <NAME>
: 名前を含むクレートを検索 -
cargo add <PACKAGE>
: Cargo.tomlのdependenciesにクレートを追加 -
cargo remove <PACKAGE>
: Cargo.tomlのdependenciesからクレートを削除 -
cargo run
: デバッグ用ビルド後に実行 -
cargo test
: テスト用関数もビルドしそれらの実行結果表示 -
cargo doc
: プロジェクトのドキュメントを生成 -
cargo build --release
: コード最適化を含めてリリースビルド
Discussion