Espaços de trabalho
Projetos com vários crates
Espaços de trabalho é uma aula grátis de Learn Rust Coding no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn Rust Coding, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn Rust Coding inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em 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 rootapp/— a binary cratecore/— a library crateutils/— 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 --libDepending 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 testTargeting One Member
Use -p (or --package) to run a command for a single member crate.
cargo run -p app
cargo test -p coreWorkspace 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
-pto target one member [workspace.dependencies]centralizes versions
Perguntas Frequentes
A aula “Espaços de trabalho” é grátis?
Sim — o texto completo de “Espaços de trabalho” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn Rust Coding, atualize para CoddyKit PRO. O curso de Learn Rust Coding inclui 4 aulas no total.
O que vou aprender em “Espaços de trabalho”?
Projetos com vários crates Você pratica Learn Rust Coding com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn Rust Coding?
Nenhuma experiência prévia é necessária. Learn Rust Coding no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Espaços de trabalho”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn Rust Coding?
Sim. Cada aula de Learn Rust Coding inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Fundamentos do Cargo
- Cargo.toml
- Espaços de trabalho
- Recursos e perfis