Chapter 23

Cargo

📌 Cargo

Cargo はパッケージ管理ツールです. パッケージ とは1つ以上のクレートを含んだもののことです.そして, クレート とは Rust プログラムをビルドしたもので,バイナリクレート(実行可能ファイル)とライブラリクレートの2つがあります.パッケージは複数のバイナリクレートを含めることができますが,ライブラリクレートは1つまでしか含めることが出来ません. モジュール はクレートの中でグループ化されたコードのことで,読みやすさと再利用性を高めるためのものです.また, プライバシー を設定することができ,内部の実装を利用できなくすることも出来ます.

init コマンドを使うと,実行したフォルダ内に,単一のバイナリクレートを含んだパッケージの作成環境が作られます.

cargo init

実行すると次のような構成になります.

(workspace)
├─ src
│   └── main.rs
├── cargo.toml
└── .gitignore 

cargo.toml は構成ファイルです. src/main.rsクレートルート です.このファイルがモジュール構造の起点となります.
build コマンドを実行するとビルドが始まります.Cargo は必要な外部パッケージなどを自動でダウンロードしてビルドします.依存する外部パッケージは cargo.toml に記述し,実際にダウンロードしたパッケージのバージョンを cargo.lock ファイルに書き込みます.

cargo build

run コマンドを実行すると,作成した実行可能ファイルを起動します.ビルドが必要な場合は自動的にビルドしてくれます.

cargo run

build, run コマンドは標準でデバッグ情報付き実行可能ファイルを作成します.オプション --release をつけることで,リリース用の実行可能ファイルを作成することができます.また,Rust にはプロファイルというものがあり,devrelease があります. --release オプションは release プロファイルを使用することを明示するものです.このプロファイルをカスタマイズすることができます.例えば,最適化オプションなどです.詳しくはドキュメントを参照してください.

cargo build
    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
cargo build --release
    Finished release [optimized] target(s) in 0.0 secs

check コマンドはコンパイルチェックをします. build コマンドとは違ってリンクを行わないので,コンパイルが通るかのチェックはこちらのほうが早いです.

cargo check

外部パッケージを使用したい場合は, Cargo.tomldependencies セクションに使用したいパッケージを指定します.例えば rand パッケージを使う場合は次のようにします:

[dependencies]
rand = "0.8.0"

現在のパッケージ構成を確認したい場合は以下のコマンドを使います:

cargo tree

バイナリパッケージをインストールすることができます.その場合は install コマンドを使います.

cargo install <package>