Builds in cargo workspaces
⚓ Rust 📅 2025-12-18 👤 surdeus 👁️ 3I am trying to understand how cargo builds crates within workspaces.
For this Cargo.toml at root directory in crossbeam project.
user@ultrabook:~/Packages/crossbeam$ cat Cargo.toml
[package]
name = "crossbeam"
# When publishing a new version:
# - Update CHANGELOG.md
# - Update README.md (when increasing major or minor version)
# - Run './tools/publish.sh crossbeam <version>'
version = "0.8.4"
edition = "2021"
rust-version = "1.61"
license = "MIT OR Apache-2.0"
repository = "https://github.com/crossbeam-rs/crossbeam"
homepage = "https://github.com/crossbeam-rs/crossbeam"
description = "Tools for concurrent programming"
keywords = ["atomic", "garbage", "non-blocking", "lock-free", "rcu"]
categories = ["concurrency", "memory-management", "data-structures", "no-std"]
exclude = ["/.*", "/ci", "/tools"]
[features]
default = ["std"]
# Enable to use APIs that require `std`.
# This is enabled by default.
std = [
"alloc",
"crossbeam-channel/std",
"crossbeam-deque/std",
"crossbeam-epoch/std",
"crossbeam-queue/std",
"crossbeam-utils/std",
]
# Enable to use APIs that require `alloc`.
# This is enabled by default and also enabled if the `std` feature is enabled.
alloc = ["crossbeam-epoch/alloc", "crossbeam-queue/alloc"]
[dependencies]
crossbeam-channel = { version = "0.5.10", path = "crossbeam-channel", default-features = false, optional = true }
crossbeam-deque = { version = "0.8.4", path = "crossbeam-deque", default-features = false, optional = true }
crossbeam-epoch = { version = "0.9.17", path = "crossbeam-epoch", default-features = false, optional = true }
crossbeam-queue = { version = "0.3.10", path = "crossbeam-queue", default-features = false, optional = true }
crossbeam-utils = { version = "0.8.18", path = "crossbeam-utils", default-features = false, features = ["atomic"] }
Why does cargo test use crossbeam-epoch v0.9.18 instead of the version 0.9.17 specified above as per Cargo.toml?
user@ultrabook:~/Packages/crossbeam$ cargo clean
warning: ignoring `resolver.feature-unification` without `-Zfeature-unification`
Removed 15710 files, 3.9GiB total
user@ultrabook:~/Packages/crossbeam$ cargo t
warning: ignoring `resolver.feature-unification` without `-Zfeature-unification`
Compiling atomic-maybe-uninit v0.3.13
Compiling crossbeam-utils v0.8.21 (/home/user/Packages/crossbeam/crossbeam-utils)
Compiling crossbeam-epoch v0.9.18 (/home/user/Packages/crossbeam/crossbeam-epoch)
Compiling crossbeam-channel v0.5.15 (/home/user/Packages/crossbeam/crossbeam-channel)
Compiling crossbeam-queue v0.3.12 (/home/user/Packages/crossbeam/crossbeam-queue)
Compiling crossbeam-deque v0.8.6 (/home/user/Packages/crossbeam/crossbeam-deque)
Compiling crossbeam v0.8.4 (/home/user/Packages/crossbeam)
Finished `test` profile [unoptimized + debuginfo] target(s) in 1.03s
Running unittests src/lib.rs (/home/user/~/.cargo/build-cache/debug/deps/crossbeam-4e531462c2db7866)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/subcrates.rs (/home/user/~/.cargo/build-cache/debug/deps/subcrates-1e40968ff29872ef)
running 5 tests
test channel ... ok
test deque ... ok
test epoch ... ok
test queue ... ok
test utils ... ok
3 posts - 3 participants
🏷️ Rust_feed