#![deny(
missing_debug_implementations,
missing_docs,
rust_2018_idioms,
unreachable_pub,
elided_lifetimes_in_paths,
clippy::missing_const_for_fn,
clippy::missing_panics_doc,
clippy::missing_safety_doc,
clippy::missing_errors_doc
)]
#![doc(test(no_crate_inject, attr(deny(warnings, rust_2018_idioms))))]
#![cfg_attr(docsrs, feature(doc_cfg))]
#![cfg_attr(all(not(feature = "std"), not(test)), no_std)]
macro_rules! cfg_item {
($feature:literal => $m:item) => {
#[cfg(feature = $feature)]
#[cfg_attr(docsrs, doc(cfg(feature = $feature)))]
$m
};
($mt:meta => $($m:item)+) => {
$(
#[cfg($mt)]
#[cfg_attr(docsrs, doc(cfg($mt)))]
$m
)+
};
}
cfg_item! { "sync" =>
pub mod sync;
}
cfg_item! { "futex" =>
pub mod futex;
}
cfg_item! { "task" =>
pub mod task;
}
mod macros;
cfg_item! { any(all(feature = "sync", feature = "std"), feature = "task") =>
pub use timeout::*;
mod timeout;
}
cfg_item! { any(feature = "sync", feature = "task") =>
mod lock;
}
#[cfg(all(feature = "task", not(feature = "std")))]
extern crate alloc;