Skip to content

Commit edf9b23

Browse files
committed
imp(arg_enum!): allows using meta items like repr(C) with arg_enum!s
One can now use more than one meta item, and things like `#[repr(C)]` Example: ```rust arg_enum! { #[repr(C)] #[derive(Debug)] pub enum MyEnum { A=1, B=2 } } ``` Closes #543
1 parent 18237f4 commit edf9b23

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

src/macros.rs

+10-10
Original file line numberDiff line numberDiff line change
@@ -334,33 +334,33 @@ macro_rules! arg_enum {
334334
}
335335
});
336336
};
337-
(#[$($m:meta),+] pub enum $e:ident { $($v:ident),+ } ) => {
337+
($(#[$($m:meta),+])+ pub enum $e:ident { $($v:ident $(=$val:expr)*),+ } ) => {
338338
arg_enum!(@impls
339-
(#[$($m),+]
339+
($(#[$($m),+])+
340340
pub enum $e {
341-
$($v),+
341+
$($v$(=$val)*),+
342342
}) -> ($e, $($v),+)
343343
);
344344
};
345-
(#[$($m:meta),+] enum $e:ident { $($v:ident),+ } ) => {
345+
($(#[$($m:meta),+])+ enum $e:ident { $($v:ident $(=$val:expr)*),+ } ) => {
346346
arg_enum!(@impls
347-
(#[$($m),+]
347+
($(#[$($m),+])+
348348
enum $e {
349-
$($v),+
349+
$($v$(=$val)*),+
350350
}) -> ($e, $($v),+)
351351
);
352352
};
353-
(pub enum $e:ident { $($v:ident),+ } ) => {
353+
(pub enum $e:ident { $($v:ident $(=$val:expr)*),+ } ) => {
354354
arg_enum!(@impls
355355
(pub enum $e {
356-
$($v),+
356+
$($v$(=$val)*),+
357357
}) -> ($e, $($v),+)
358358
);
359359
};
360-
(enum $e:ident { $($v:ident),+ } ) => {
360+
(enum $e:ident { $($v:ident $(=$val:expr)*),+ } ) => {
361361
arg_enum!(@impls
362362
(enum $e {
363-
$($v),+
363+
$($v$(=$val)*),+
364364
}) -> ($e, $($v),+)
365365
);
366366
};

0 commit comments

Comments
 (0)