]> git.lizzy.rs Git - rust.git/blob - compiler/rustc_data_structures/src/macros.rs
Auto merge of #103691 - michaelwoerister:consistent-slice-and-str-cpp-like-debuginfo...
[rust.git] / compiler / rustc_data_structures / src / macros.rs
1 #[macro_export]
2 macro_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 }