🧺

RustのCargoとはなんぞや?

2023/01/18に公開

🛒 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