use cairo_lang_macro_stable::StableExpansionKind;
use std::num::NonZeroU8;
#[doc(hidden)]
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum ExpansionKind {
Attr = 1,
Derive = 2,
Inline = 3,
}
impl ExpansionKind {
#[doc(hidden)]
pub fn into_stable(self) -> StableExpansionKind {
NonZeroU8::try_from(self as u8).unwrap()
}
#[doc(hidden)]
pub unsafe fn from_stable(kind: &StableExpansionKind) -> Self {
if *kind == Self::Attr.into_stable() {
Self::Attr
} else if *kind == Self::Derive.into_stable() {
Self::Derive
} else {
Self::Inline
}
}
}