use ::core::{any::Any, error::Error, fmt::Debug};
#[cfg(feature = "send")]
pub trait PotentiallySend: Send {}
#[cfg(feature = "send")]
impl<T: Send> PotentiallySend for T {}
#[cfg(not(feature = "send"))]
pub trait PotentiallySend {}
#[cfg(not(feature = "send"))]
impl<T> PotentiallySend for T {}
#[cfg(feature = "sync")]
pub trait PotentiallySync: Sync {}
#[cfg(feature = "sync")]
impl<T: Sync> PotentiallySync for T {}
#[cfg(not(feature = "sync"))]
pub trait PotentiallySync {}
#[cfg(not(feature = "sync"))]
impl<T> PotentiallySync for T {}
#[diagnostic::on_unimplemented(
message = "Make sure your type implements Send/Sync according to the activated crate features"
)]
pub trait SendSync: PotentiallySend + PotentiallySync {}
impl<T: PotentiallySend + PotentiallySync> SendSync for T {}
#[diagnostic::on_unimplemented(
message = "Make sure your type implements Debug and Send/Sync according to the activated crate features"
)]
pub trait AnyDebugSendSync: Any + Debug + SendSync {}
impl<T: Any + Debug + SendSync> AnyDebugSendSync for T {}
pub trait ErrorSendSync: Error + SendSync {}
impl<T: Error + SendSync> ErrorSendSync for T {}