#![doc = include_str!("../README.md")]
#![cfg_attr(docsrs, feature(doc_cfg))]
#[cfg(feature="crossbeam")]
pub mod crossbeam;
#[cfg(feature="std")]
pub mod std;
mod results;
pub use results::*;
mod shared_details;
pub use shared_details::*;
mod bounded_shared_details;
pub use bounded_shared_details::*;
#[cfg(feature="tokio")]
pub mod tokio_helpers;
mod waker_permit_queue;
pub use waker_permit_queue::*;
#[cfg(test)]
mod waker_permit_queue_tests;
mod waker_queue;
pub use waker_queue::*;
#[cfg(feature="scc")]
pub mod scc;
mod channel_shared_details;
pub use channel_shared_details::*;
mod queued_waker;
pub use queued_waker::*;
mod limited_waker_permit_queue;
pub use limited_waker_permit_queue::*;
#[cfg(test)]
mod limited_waker_permit_queue_tests;
#[cfg(feature="crossbeam-queue")]
pub mod crossbeam_queue;
#[cfg(feature="use_std_sync")]
pub type PreferredMutexType<T> = ::std::sync::Mutex<T>;
#[cfg(feature="use_parking_lot_sync")]
pub type PreferredMutexType<T> = parking_lot::Mutex<T>;
#[cfg(feature="use_parking_lot_fair_sync")]
pub type PreferredMutexType<T> = parking_lot::FairMutex<T>;
#[cfg(feature="use_std_sync")]
pub type PreferredRwLockType<T> = ::std::sync::RwLock<T>;
#[cfg(feature="use_parking_lot_sync")]
pub type PreferredRwLockType<T> = parking_lot::RwLock<T>;
pub mod shared_reading_and_writing;
mod waker_queue_with_updated_item;
pub use waker_queue_with_updated_item::*;
mod item_updater;
pub use item_updater::*;
mod item_updaters;
pub use item_updaters::*;