-
Notifications
You must be signed in to change notification settings - Fork 15
Open

Description
The main crossbeam
crate is going to be an umbrella crate that brings together the most important pieces of the Crossbeam project together and reexports them. I've been thinking what should it look like. Here are some quick ideas...
First, crossbeam
depends on crossbeam-epoch
and reexports the crate as:
crossbeam::epoch::* // from crossbeam-epoch
Then we have several atomic types, but I'm unsure if they should live in sync::atomic
or just atomic
. The former is more consistent with the standard library, though.
crossbeam::sync::atomic::{AtomicBox,AtomicArc,AtomicCell} // from crossbeam-atomic
There's also a bunch of data structures:
crossbeam::sync::Stack // from crossbeam-stack
crossbeam::sync::Queue // from crossbeam-queue
crossbeam::sync::channel::* // from crossbeam-channel
crossbeam::sync::{deque,Worker,Stealer} // from crossbeam-deque
Finally, some utilities:
crossbeam::scoped; // from crossbeam-utils
crossbeam::CachePadded; // from crossbeam-utils
But, instead of just shoving utilities into the crate root, we could organize them into submodules:
crossbeam::thread::scoped; // from crossbeam-utils
crossbeam::utils::CachePadded; // from crossbeam-utils
So the questions we need to answer are:
- What goes inside
crossbeam
and what needs to be left outside? When should a Rust programmer reach forcrossbeam-X
instead ofcrossbeam
? - What hierarchy of submodules do we want? Do we closely mimic
std
or come up with our own?
Metadata
Metadata
Assignees
Labels
No labels