RustのCargoとはなんぞや?
🛒 Cargoについて
CargoはRustのビルドシステム兼パッケージマネージャ
普通のパッケージマネージャ同様依存関係の管理やプロジェクトの管理まで行なってくれる優れもの
Cargoでプロジェクト作成
前回のHello, worldプログラムと同じものを作ります
先にプロジェクトを作成
$ cargo new hello_cargo
$ cd hello_cargo
こんな感じでプロジェクトが作られます
hello_cargo/
├── .git/
├── .gitignore
├── Cargo.toml
└── src
└── main.rs
.git/
、.gitignore
が生成されていることから分かるように、プロジェクトはgitの初期化も行ってくれる
src/
ディレクトリはそのまま、ソースファイルのディレクトリ
Cargo.toml
はCargoの設定フォーマットファイルです
Cargo.toml
中身はこんな感じ
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
[package]
はパッケージ情報を書くセクション
name
はそのまま、パッケージ名
version
はビルドするパッケージのバージョン
edition
はビルドに使用するRustのエディションの指定
エディションはRustの推奨バージョンとでも思っておいてください
main.rs
には前回書いたHello, worldプログラムと同じものが書かれている
Cargoプロジェクトのビルド・実行
以下のコマンドを実行することでビルドを行える
$ cargo build
実行ファイルはトップディレクトリではなく、target/debug/hello_cargo
に生成される
実行方法は通常と同じ
$ ./target/debug/hello_cargo
他にも色々ファイルやディレクトリが生成されますが、これらは割愛
cargo.lock
だけ説明しておくと、依存関係の詳細な指定や設定のファイル
先ほど普通の実行方法を書きましたが、cargoを使うとコンパイルから実行まで行うこともできます
$ cargo run
前回のソースコードからの変更点があればコンパイルしてから実行、なければそのまま実行する
コンパイルエラーがないかだけチェックすることもできる
$ cargo check
cargoの通常のビルドではデバッグビルドとなり、高速なビルドができる代わりに実行ファイルの最適化は行われない
そのため、実際にコードをリリースする際にはリリースビルドを行うことを推奨します
$ cargo build --release
このコマンドでコードの最適化を行なった状態でビルドが可能です
cargoについてはこんな感じです
Discussion