0Pricing
Learn Rust Coding · Lección

Workspaces

Proyectos con varios crates

Workspaces es una lección gratuita de Learn Rust Coding en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn Rust Coding, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn Rust Coding incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

What Is a Workspace?

A workspace is a set of related crates that share a single Cargo.lock and a common target directory. It's the standard way to manage multi-crate projects.

The Root Manifest

The workspace root has a Cargo.toml with a [workspace] table listing the member crates. The root itself usually has no package.

[workspace]
members = ["app", "core", "utils"]
resolver = "2"

Workspace Layout

A typical layout puts each crate in its own subdirectory:

  • Cargo.toml — workspace root
  • app/ — a binary crate
  • core/ — a library crate
  • utils/ — another library crate

Creating Members

You create members like any crate, then add them to the root manifest's members list.

cargo new app
cargo new core --lib
cargo new utils --lib

Depending on a Member

One member crate depends on another using a path dependency in its own Cargo.toml.

[dependencies]
core = { path = "../core" }
utils = { path = "../utils" }

Calling Across Crates

Public items in one crate are used from another by referencing the crate name. Here core exposes a function the binary calls.

// 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}");
}

Building the Whole Workspace

Running Cargo at the root builds every member. The shared target directory means common dependencies are compiled only once.

cargo build
cargo test

Targeting One Member

Use -p (or --package) to run a command for a single member crate.

cargo run -p app
cargo test -p core

Workspace Dependencies

Define shared versions once under [workspace.dependencies], then reference them from members to keep versions in sync.

# root Cargo.toml
[workspace.dependencies]
serde = "1.0"

# member Cargo.toml
[dependencies]
serde = { workspace = true }

Why Use Workspaces?

Benefits of a workspace:

  • Single shared lockfile for consistent versions
  • Faster builds via one shared target directory
  • Easy to split a large project into focused crates
  • One command builds and tests everything

Excluding a Directory

The exclude key keeps certain directories out of the workspace, while default-members sets which crates run when you do not pass -p.

[workspace]
members = ["app", "core"]
exclude = ["experiments"]
default-members = ["app"]

Quick Check

What do all crates in a workspace share?

Recap

You learned about workspaces:

  • The [workspace] table lists members
  • Members depend on each other via path
  • A shared lockfile and target directory speed up builds
  • Use -p to target one member
  • [workspace.dependencies] centralizes versions

Preguntas frecuentes

¿La lección «Workspaces» es gratis?

Sí — el texto completo de «Workspaces» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn Rust Coding, actualiza a CoddyKit PRO. El curso de Learn Rust Coding incluye 4 lecciones en total.

¿Qué aprenderé en «Workspaces»?

Proyectos con varios crates Practicas Learn Rust Coding con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Learn Rust Coding?

No se requiere experiencia previa. Learn Rust Coding en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Workspaces»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Learn Rust Coding?

Sí. Cada lección de Learn Rust Coding incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Fundamentos de Cargo
  2. Cargo.toml
  3. Workspaces
  4. Features y perfiles
← Volver a Learn Rust Coding