This is a minimal crate which implements match through different types.
Usage:
```rust
extern crate match_cast; use std::panic;
fn main() { let res = panic::catch_unwind(|| { panic!("Oh no!"); });
let any = res.unwrap_err();
let result = match_cast!( any {
val as Option<u8> => {
format!("Option<u8> = {:?}", val)
},
val as String => {
format!("String = {:?}", val)
},
val as &'static str => {
format!("&'static str = {:?}", val)
},
});
assert_eq!(result.unwrap(), "&'static str = \"Oh no!\"");
} ```
To use pattern there is match_down
macro:
```rust
extern crate match_cast; use std::any::Any;
struct Bar { x: u8, }
struct Foo { x: u8, }
fn main() {
let any: Box<Any> = Box::new(Foo { x: 45 });
let result = match_down!( any {
Bar { x } => { x },
Foo { x } => { x },
});
assert_eq!(result.unwrap(), 45);
} ```