//@ 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!() } | |
} |