#![doc = include_str!("../README.md")]
#![cfg_attr(not(all(feature = "std", test)), no_std)]
#![deny(missing_docs, warnings)]
#![forbid(unsafe_code)]
#![cfg_attr(docsrs, feature(doc_cfg))]
#![cfg_attr(docsrs, allow(unused_attributes))]
#[cfg(all(not(feature = "std"), feature = "alloc"))]
extern crate alloc as std;
#[cfg(feature = "std")]
extern crate std;
#[cfg(all(any(feature = "std", feature = "alloc"), feature = "future"))]
#[cfg_attr(
docsrs,
doc(cfg(all(any(feature = "std", feature = "alloc"), feature = "future")))
)]
pub mod future;
#[cfg(feature = "std")]
mod sync;
#[cfg(feature = "std")]
pub use sync::*;
#[cfg(any(feature = "std", feature = "alloc"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "std", feature = "alloc"))))]
pub mod spin;
#[cfg(all(not(feature = "std"), feature = "alloc"))]
pub use spin::WaitGroup;