1#[cfg(feature = "std")]
6#[macro_export]
7macro_rules! r#enum {
8 (
9 $( #[$meta:meta] )*
10 $pub:vis enum $name:ident {
11 $( $variant_name:ident ),+ $(,)?
12 }
13 ) => {
14 $crate::internal_enum! {
15 $( #[$meta] )*
16 $pub enum $name {
17 $( $variant_name ),+
18 }
19 }
20
21 impl ::std::error::Error for $name {}
22 };
23
24 (
25 $( #[$meta:meta] )*
26 $pub:vis enum $name:ident {
27 $( $variant_name:ident $( $variant_data:tt )? ),+ $(,)?
28 }
29 ) => {
30 $crate::internal_enum! {
31 $( #[$meta] )*
32 $pub enum $name {
33 $( $variant_name $( $variant_data )? ),+
34 }
35 }
36
37 impl ::std::error::Error for $name {}
38 };
39}
40
41#[cfg(not(feature = "std"))]
42#[macro_export]
43macro_rules! r#enum {
44 (
45 $( #[$meta:meta] )*
46 $pub:vis enum $name:ident {
47 $( $variant_name:ident ),+ $(,)?
48 }
49 ) => {
50 $crate::internal_enum! {
51 $( #[$meta] )*
52 $pub enum $name {
53 $( $variant_name ),+
54 }
55 }
56 };
57
58 (
59 $( #[$meta:meta] )*
60 $pub:vis enum $name:ident {
61 $( $variant_name:ident $( $variant_data:tt )? ),+ $(,)?
62 }
63 ) => {
64 $crate::internal_enum! {
65 $( #[$meta] )*
66 $pub enum $name {
67 $( $variant_name $( $variant_data )? ),+
68 }
69 }
70 };
71}
72
73#[macro_export(local_inner_macros)]
75macro_rules! internal_enum {
76 (
77 $( #[$meta:meta] )*
78 $pub:vis enum $name:ident {
79 $( $variant_name:ident ),+ $(,)?
80 }
81 ) => {
82 $( #[$meta] )*
83 #[derive(Debug)]
84 $pub enum $name {
85 $( $variant_name ),+
86 }
87
88 impl ::core::fmt::Display for $name {
89 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
90 ::core::write!(f, "{:?}", self)
91 }
92 }
93 };
94
95 (
96 $( #[$meta:meta] )*
97 $pub:vis enum $name:ident {
98 $( $variant_name:ident $( $variant_data:tt )? ),+ $(,)?
99 }
100 ) => {
101 $( #[$meta] )*
102 #[derive(Debug)]
103 $pub enum $name {
104 $( $variant_name $( $variant_data )? ),+
105 }
106
107 impl ::core::fmt::Display for $name {
108 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
109 ::core::write!(f, "{:?}", self)
110 }
111 }
112 }
113}