🐙

[rust] クレート(crate)とは?

2025/01/05に公開

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