rustc_data_structures/
macros.rs1#[macro_export]
2macro_rules! enum_from_u32 {
3 ($(#[$attr:meta])* pub enum $name:ident {
4 $($(#[$var_attr:meta])* $variant:ident = $e:expr,)*
5 }) => {
6 $(#[$attr])*
7 pub enum $name {
8 $($(#[$var_attr])* $variant = $e),*
9 }
10
11 impl $name {
12 pub fn from_u32(u: u32) -> Option<$name> {
13 $(if u == $name::$variant as u32 {
14 return Some($name::$variant)
15 })*
16 None
17 }
18 }
19 };
20 ($(#[$attr:meta])* pub enum $name:ident {
21 $($(#[$var_attr:meta])* $variant:ident,)*
22 }) => {
23 $(#[$attr])*
24 pub enum $name {
25 $($(#[$var_attr])* $variant,)*
26 }
27
28 impl $name {
29 pub fn from_u32(u: u32) -> Option<$name> {
30 $(if u == $name::$variant as u32 {
31 return Some($name::$variant)
32 })*
33 None
34 }
35 }
36 }
37}