use crate::repr::EnumSetTypeRepr;
#[cfg(feature = "serde")]
use {crate::EnumSet, serde2 as serde};
pub unsafe trait EnumSetType: Copy + Eq + EnumSetTypePrivate {}
pub unsafe trait EnumSetTypeWithRepr:
EnumSetType + EnumSetTypePrivate<Repr = <Self as EnumSetTypeWithRepr>::Repr>
{
type Repr: EnumSetTypeRepr;
}
pub unsafe trait EnumSetTypePrivate {
type ConstHelper;
const CONST_HELPER_INSTANCE: Self::ConstHelper;
type Repr: EnumSetTypeRepr;
const ALL_BITS: Self::Repr;
const BIT_WIDTH: u32;
const VARIANT_COUNT: u32;
fn enum_into_u32(self) -> u32;
unsafe fn enum_from_u32(val: u32) -> Self;
#[cfg(feature = "serde")]
fn serialize<S: serde::Serializer>(set: EnumSet<Self>, ser: S) -> Result<S::Ok, S::Error>
where Self: EnumSetType;
#[cfg(feature = "serde")]
fn deserialize<'de, D: serde::Deserializer<'de>>(de: D) -> Result<EnumSet<Self>, D::Error>
where Self: EnumSetType;
}