use std::ops::Deref;
pub(crate) trait Reentrant<'s, T> {
fn create(data: T) -> Self;
fn reentrant_lock(&'s self) -> impl Deref<Target = T> + 's;
}
cfg_if::cfg_if! {
if #[cfg(feature = "std-reentrant-lock")] {
mod std_reentrant_lock;
pub(crate) use std_reentrant_lock::Mutex;
} else if #[cfg(feature = "lock_api")] {
mod lock_api;
pub(crate) use lock_api::Mutex;
} else if #[cfg(feature = "remutex")] {
mod remutex;
pub(crate) use remutex::Mutex;
} else {
mod mutex;
pub(crate) use mutex::Mutex;
}
}