Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #[derive(Debug)]
- enum TestEnum {
- Empty,
- Single(isize),
- Pair(isize, char),
- Struct{first: char, second: char},
- }
- macro_rules! assert_variant {
- ($value:expr, $pattern:pat) => ({
- let value = &$value;
- if let $pattern = value {} else {
- panic!(r#"assertion failed (value doesn't match pattern):
- value: `{:?}`,
- pattern: `{}`"#, value, stringify!($pattern))
- }
- })
- // TODO: Additional patterns for trailing args, like assert and assert_eq
- }
- fn main() {
- let value = TestEnum::Pair(10, 'a');
- assert_variant!(value, TestEnum::Pair(..));
- assert_variant!(value, TestEnum::Pair(10, _));
- // This one fails
- assert_variant!(value, TestEnum::Struct{..});
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement