#![warn(missing_docs)]
#![warn(missing_debug_implementations)]
#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(feature = "nightly", feature(cfg_target_has_atomic))]
#[macro_use]
extern crate cfg_if;
#[cfg(feature = "std")]
extern crate core;
cfg_if! {
if #[cfg(feature = "alloc")] {
extern crate alloc;
} else if #[cfg(feature = "std")] {
extern crate std as alloc;
}
}
mod _epoch {
pub extern crate crossbeam_epoch;
}
#[doc(inline)]
pub use _epoch::crossbeam_epoch as epoch;
extern crate crossbeam_utils;
#[cfg_attr(feature = "nightly", cfg(target_has_atomic = "ptr"))]
pub use crossbeam_utils::atomic;
pub mod utils {
pub use crossbeam_utils::Backoff;
pub use crossbeam_utils::CachePadded;
}
cfg_if! {
if #[cfg(feature = "std")] {
mod _deque {
pub extern crate crossbeam_deque;
}
#[doc(inline)]
pub use _deque::crossbeam_deque as deque;
mod _channel {
pub extern crate crossbeam_channel;
pub use self::crossbeam_channel::*;
}
#[doc(inline)]
pub use _channel::crossbeam_channel as channel;
#[doc(hidden)]
pub use _channel::*;
mod _queue {
pub extern crate crossbeam_queue;
}
#[doc(inline)]
pub use _queue::crossbeam_queue as queue;
pub use crossbeam_utils::sync;
pub use crossbeam_utils::thread;
pub use crossbeam_utils::thread::scope;
}
}