| //@ run-pass | |
| macro_rules! enum_number { | |
| ($name:ident { $($variant:ident = $value:expr, )* }) => { | |
| enum $name { | |
| $($variant = $value,)* | |
| } | |
| fn foo(value: i32) -> Option<$name> { | |
| match value { | |
| $( $value => Some($name::$variant), )* | |
| _ => None | |
| } | |
| } | |
| } | |
| } | |
| enum_number!(Change { | |
| Down = -1, | |
| None = 0, | |
| Up = 1, | |
| }); | |
| fn main() { | |
| if let Some(Change::Down) = foo(-1) {} else { panic!() } | |
| } |