| name | rust-cargo |
| description | Work with Cargo commands, workspace configuration, dependency management, and build systems. Use when managing dependencies, configuring workspaces, building projects, running tests, or publishing crates. Handles Cargo.toml configuration, workspace setup, dependency resolution, and build commands. |
Cargo and Workspace Management
Guidelines for working with Cargo, workspaces, dependencies, and build configuration.
When to Use This Skill
- Managing dependencies in
Cargo.toml
- Configuring Rust workspaces
- Understanding dependency resolution
- Building and testing projects
- Publishing crates
- Working with feature flags
- Understanding workspace inheritance
Workspace Configuration
Basic Workspace
[workspace]
members = [
"crate1",
"crate2",
"crate3",
]
resolver = "2"
Workspace Package Inheritance
[workspace]
members = ["crate1", "crate2"]
[workspace.package]
version = "0.1.0"
edition = "2021"
authors = ["Author Name"]
license = "MIT"
[package]
name = "crate1"
Workspace Dependencies
[workspace.dependencies]
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1.0", features = ["full"] }
[dependencies]
serde = { workspace = true }
tokio = { workspace = true }
Dependency Management
Version Specifiers
[dependencies]
crate = "1.2.3"
crate = "^1.2.3"
crate = "~1.2.3"
crate = "*"
crate = ">=1.2.0, <2.0.0"
Dependency Sources
crate = "1.0"
crate = { git = "https://github.com/user/repo", branch = "main" }
crate = { git = "https://github.com/user/repo", tag = "v1.0.0" }
crate = { git = "https://github.com/user/repo", rev = "abc123" }
crate = { path = "../local-crate" }
crate = { workspace = true }
crate = { version = "1.0", features = ["feature1", "feature2"] }
crate = { version = "1.0", optional = true }
Dev Dependencies
[dev-dependencies]
criterion = "0.5"
tempfile = "3.0"
Build Dependencies
[build-dependencies]
cc = "1.0"
Common Cargo Commands
Building
cargo build
cargo build --release
cargo build --package <package-name>
cargo build --features <feature-name>
cargo build --no-default-features
cargo build --workspace
Testing
cargo test
cargo test --package <package-name>
cargo test test_name
cargo test -- --nocapture
cargo test --features <feature-name>
Checking
cargo check
cargo check --all-targets
cargo check --features <feature-name>
Formatting
cargo fmt
cargo fmt --check
cargo fmt --workspace
Clippy
cargo clippy
cargo clippy --all-targets --all-features
cargo clippy --fix --allow-dirty
cargo clippy -- -D warnings
Documentation
cargo doc
cargo doc --open
cargo doc --package <package-name>
cargo doc --no-deps
cargo doc --workspace
Dependency Management
cargo update
cargo update -p <crate-name>
cargo tree
cargo tree --package <package-name>
cargo tree --depth 1
cargo tree --invert -p <crate-name>
Workspace Metadata Scripts
[workspace.metadata.scripts]
build = "cargo build --workspace"
test = "cargo test --workspace"
check = "cargo check --workspace"
clippy = "cargo clippy --workspace"
fmt = "cargo fmt --workspace"
Package Metadata
[package]
name = "my-crate"
version = "0.1.0"
edition = "2021"
authors = ["Author"]
license = "MIT"
description = "Description of the crate"
repository = "https://github.com/user/repo"
keywords = ["keyword1", "keyword2"]
categories = ["category1"]
readme = "README.md"
Feature Flags
See rust-features skill for detailed feature flag usage.
Important Rules
- Use workspace dependencies: Share common dependencies via
[workspace.dependencies]
- Inherit workspace values: Use
workspace = true for version, edition, authors, license
- Pin versions carefully: Use
^ for compatible updates, exact versions sparingly
- Document features: Clearly document what each feature enables
- Use resolver = "2" or "3": Specify resolver version for workspace
- Organize dependencies: Group by purpose (core, error handling, serialization, etc.)
Examples from Project
See Cargo.toml for workspace configuration:
- Workspace members
- Workspace package inheritance
- Workspace dependencies
- Workspace metadata scripts
See individual crate Cargo.toml files for:
- Package configuration
- Feature definitions
- Dependency usage with
workspace = true
Common Patterns
✅ Good
[workspace]
members = ["crate1", "crate2"]
[workspace.dependencies]
serde = { version = "1.0", features = ["derive"] }
[package]
name = "crate1"
serde = { workspace = true }
❌ Avoid
[package]
serde = "1.0"
[dependencies]
crate = "*"