File tree Expand file tree Collapse file tree 2 files changed +38
-37
lines changed Expand file tree Collapse file tree 2 files changed +38
-37
lines changed Original file line number Diff line number Diff line change 1- macro_rules! enum_from_u32 {
2- ( $( #[ $attr: meta] ) * pub enum $name: ident {
3- $( $variant: ident = $e: expr, ) *
4- } ) => {
5- $( #[ $attr] ) *
6- pub enum $name {
7- $( $variant = $e) ,*
8- }
9-
10- impl $name {
11- pub fn from_u32( u: u32 ) -> Option <$name> {
12- $( if u == $name:: $variant as u32 {
13- return Some ( $name:: $variant)
14- } ) *
15- None
16- }
17- }
18- } ;
19- ( $( #[ $attr: meta] ) * pub enum $name: ident {
20- $( $variant: ident, ) *
21- } ) => {
22- $( #[ $attr] ) *
23- pub enum $name {
24- $( $variant, ) *
25- }
26-
27- impl $name {
28- pub fn from_u32( u: u32 ) -> Option <$name> {
29- $( if u == $name:: $variant as u32 {
30- return Some ( $name:: $variant)
31- } ) *
32- None
33- }
34- }
35- }
36- }
37-
381#[ macro_export]
392macro_rules! bug {
403 ( ) => ( bug!( "impossible case reached" ) ) ;
Original file line number Diff line number Diff line change @@ -17,3 +17,41 @@ macro_rules! static_assert_size {
1717 const _: [ ( ) ; $size] = [ ( ) ; :: std:: mem:: size_of:: <$ty>( ) ] ;
1818 } ;
1919}
20+
21+ #[ macro_export]
22+ macro_rules! enum_from_u32 {
23+ ( $( #[ $attr: meta] ) * pub enum $name: ident {
24+ $( $variant: ident = $e: expr, ) *
25+ } ) => {
26+ $( #[ $attr] ) *
27+ pub enum $name {
28+ $( $variant = $e) ,*
29+ }
30+
31+ impl $name {
32+ pub fn from_u32( u: u32 ) -> Option <$name> {
33+ $( if u == $name:: $variant as u32 {
34+ return Some ( $name:: $variant)
35+ } ) *
36+ None
37+ }
38+ }
39+ } ;
40+ ( $( #[ $attr: meta] ) * pub enum $name: ident {
41+ $( $variant: ident, ) *
42+ } ) => {
43+ $( #[ $attr] ) *
44+ pub enum $name {
45+ $( $variant, ) *
46+ }
47+
48+ impl $name {
49+ pub fn from_u32( u: u32 ) -> Option <$name> {
50+ $( if u == $name:: $variant as u32 {
51+ return Some ( $name:: $variant)
52+ } ) *
53+ None
54+ }
55+ }
56+ }
57+ }
You can’t perform that action at this time.
0 commit comments