ワークスペース
複数クレートのプロジェクト
「ワークスペース」はCoddyKit上の無料Learn Rust Codingレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn Rust Coding学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn Rust Codingコースには全4レッスンが含まれています。
ワークスペースとは
ワークスペースは、1つのCargo.lockと共通のtargetディレクトリを共有する、関連するクレートの集合です。複数クレートのプロジェクトを管理する標準的な方法です。
ルートマニフェスト
ワークスペースのルートには[workspace]テーブルを含むCargo.tomlがあり、メンバークレートを一覧にします。通常、ルート自体にはパッケージがありません。
[workspace]
members = ["app", "core", "utils"]
resolver = "2"ワークスペースの構成
一般的な構成では、各クレートを専用のサブディレクトリに配置します。
Cargo.toml— ワークスペースのルートapp/— バイナリクレートcore/— ライブラリクレートutils/— 別のライブラリクレート
メンバーの作成
メンバーは通常のクレートと同じように作成し、ルートマニフェストの members リストに追加します。
cargo new app
cargo new core --lib
cargo new utils --libメンバーへの依存
あるメンバークレートから別のメンバークレートへの依存は、自身の Cargo.toml で path 依存として指定します。
[dependencies]
core = { path = "../core" }
utils = { path = "../utils" }クレート間の呼び出し
あるクレートの公開アイテムを別のクレートから使うには、クレート名を指定します。ここでは core が、バイナリから呼び出される関数を公開しています。
// in core/src/lib.rs
pub fn greeting(name: &str) -> String {
format!("Hello, {name}!")
}
// in app/src/main.rs
fn main() {
let msg = core::greeting("workspace");
println!("{msg}");
}ワークスペース全体のビルド
ルートで Cargo を実行すると、すべてのメンバーがビルドされます。共有される target ディレクトリにより、共通の依存関係は一度だけコンパイルされます。
cargo build
cargo test1つのメンバーを対象にする
-p(または --package)を使うと、1つのメンバークレートに対してコマンドを実行できます。
cargo run -p app
cargo test -p coreワークスペースの依存関係
共有するバージョンを [workspace.dependencies] に一度だけ定義し、各メンバーから参照することで、バージョンを同期できます。
# root Cargo.toml
[workspace.dependencies]
serde = "1.0"
# member Cargo.toml
[dependencies]
serde = { workspace = true }ワークスペースを使う理由
ワークスペースの利点:
- バージョンを一貫させる単一の共有ロックファイル
- 共有ターゲットディレクトリによる高速なビルド
- 大規模なプロジェクトを目的別のクレートに簡単に分割できる
- 1つのコマンドですべてをビルドしてテストできる
ディレクトリを除外する
exclude キーを使うと特定のディレクトリをワークスペースから除外できます。一方、default-members では -p を指定しなかったときに実行するクレートを設定します。
[workspace]
members = ["app", "core"]
exclude = ["experiments"]
default-members = ["app"]理解度チェック
ワークスペース内のすべてのクレートで共有されるものは何ですか?
まとめ
ワークスペースについて学びました:
[workspace]テーブルにメンバーを一覧表示する- メンバー同士は
pathを介して依存する - 共有ロックファイルとターゲットディレクトリによりビルドが高速になる
-pで1つのメンバーを対象にする[workspace.dependencies]でバージョンを一元管理する
よくある質問
「ワークスペース」レッスンは無料ですか?
はい。「ワークスペース」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn Rust Codingコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn Rust Codingコースには全4レッスンが含まれています。
「ワークスペース」で何を学びますか?
複数クレートのプロジェクト ブラウザで直接実行するハンズオンコードでLearn Rust Codingを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn Rust Codingを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn Rust Codingは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「ワークスペース」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn Rust Codingレッスンでコードを書いて実行できますか?
はい。すべてのLearn Rust Codingレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。