🐙
[rust] クレート(crate)とは?
rustには2種類のクレートがある
- ライブラリクレート
- 再利用可能な機能やコードを提供するクレート。
- 他のプロジェクトやクレートで利用されます。
- 例: serde (JSONシリアライズ/デシリアライズライブラリ)
- バイナリクレート
- 実行可能なプログラムを提供するクレート。
- メイン関数 (main) を含み、コンパイル後に実行可能ファイルになります。
- 例: コマンドラインツールなどのアプリケーション。
クレートの構成
クレートは主に以下の要素で構成されています。
-
ソースコード
Rustファイル (.rs) で記述されたコード。
ライブラリクレートの場合はsrc/lib.rs、バイナリクレートの場合はsrc/main.rsがエントリーポイントとなります。 -
Cargo.toml
クレートのメタデータや依存関係、バージョン情報などを記述するファイル。
Rustプロジェクトの設定を管理する重要な役割を果たします。
主な構造:
[package]
name = "example_crate"
version = "0.1.0"
authors = ["Your Name <you@example.com>"]
edition = "2021"
[dependencies]
serde = "1.0"
- Cargo.lock
依存関係のバージョンを固定するためのファイル。
ビルド時の依存関係が一貫性を保つように管理されます。
クレートの作成
Rustで新しいクレートを作成するには、以下のコマンドを使用します。
ライブラリクレートの作成
cargo new my_library --lib
フォルダ構成:
my_library/
├── Cargo.toml
└── src/
└── lib.rs
バイナリクレートの作成
cargo new my_app
フォルダ構成:
my_app/
├── Cargo.toml
└── src/
└── main.rs
クレートの管理
Rustでは、Cargoというツールを使ってクレートを管理します。CargoはRustのビルドシステム兼パッケージマネージャで、以下の操作を簡単に行えます。
依存関係の追加
Cargo.toml内の[dependencies]セクションに記述。
例:
[dependencies]
serde = "1.0"
クレートのビルド
プロジェクトをビルド:
cargo build
クレートの実行
バイナリクレートの実行:
cargo run
依存関係の更新
依存関係を最新の互換バージョンに更新:
cargo update
依存関係のツリー確認
現在のプロジェクトが使用している依存関係を確認:
cargo tree
Discussion