mod private {
pub trait Sealed {}
}
#[cfg(any(feature = "ds-write", feature = "ds-panic"))]
mod use_default {
use super::*;
#[cfg_attr(
feature = "derives",
derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)
)]
pub enum UseDefaultOnUninit {}
impl OnUninit for UseDefaultOnUninit {
type ExtraData = ();
}
impl private::Sealed for UseDefaultOnUninit {}
}
use core::sync::atomic::AtomicBool;
#[cfg(any(feature = "ds-write", feature = "ds-panic"))]
pub use use_default::*;
pub trait OnUninit: private::Sealed {
type ExtraData;
}
#[cfg_attr(
feature = "derives",
derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)
)]
pub enum ErrorOnUninit {}
impl OnUninit for ErrorOnUninit {
type ExtraData = ();
}
impl private::Sealed for ErrorOnUninit {}
#[cfg_attr(
feature = "derives",
derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)
)]
pub enum PanicOnUninit {}
impl OnUninit for PanicOnUninit {
type ExtraData = ();
}
impl private::Sealed for PanicOnUninit {}
#[cfg_attr(
feature = "derives",
derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)
)]
pub enum DoNothingOnUninit {}
impl OnUninit for DoNothingOnUninit {
type ExtraData = ();
}
impl private::Sealed for DoNothingOnUninit {}
#[cfg_attr(
feature = "derives",
derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)
)]
pub enum FlagOnUninit {}
impl OnUninit for FlagOnUninit {
type ExtraData = AtomicBool;
}
impl private::Sealed for FlagOnUninit {}