0Pricing
Learn Rust Coding · レッスン

ワークスペース

複数クレートのプロジェクト

「ワークスペース」は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 test

1つのメンバーを対象にする

-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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Cargoの基礎
  2. Cargo.toml
  3. ワークスペース
  4. FeaturesとProfiles
← Learn Rust Codingに戻る