Set of downcasting matching macros akin to what Scala's match or Haskell's case can do. Useful in actor models etc.
let a = Box::new(5_i32) as Box<Any>;
let b = match_downcast(a, {
x: i32 => x
y: f32 => x as i32,
z: () => -1,
_ => panic!()
});
assert_eq!(b, 5);