macro_rules! TryFromU32 { | |
derive() ( | |
$(#[$meta:meta])* | |
$vis:vis enum $Type:ident { | |
$( | |
$(#[$varmeta:meta])* | |
$Variant:ident $(= $discr:expr)? | |
),* $(,)? | |
} | |
) => { | |
impl ::core::convert::TryFrom<u32> for $Type { | |
type Error = u32; | |
#[allow(deprecated)] // Don't warn about deprecated variants. | |
fn try_from(value: u32) -> ::core::result::Result<$Type, Self::Error> { | |
$( if value == const { $Type::$Variant as u32 } { return Ok($Type::$Variant) } )* | |
Err(value) | |
} | |
} | |
} | |
} | |
pub(crate) use TryFromU32; |