macro_rules! downcast {
( $e1:expr => $p1:path, $( $e:expr => $p:path ),+ $(,)? ) => { ... };
($e:expr => $p:path) => { ... };
() => { ... };
}
Expand description
Downcast the given arguments to the associated enum variant.
Note
Only works for enums whose variants only hold a single value.
Example
use ibc::downcast;
enum Foo {
Bar(u32),
Baz(bool),
}
let bar = Foo::Bar(42);
let baz = Foo::Baz(true);
if let Some(value) = downcast!(bar => Foo::Bar) {
println!("value is a u32: {}", value);
}
if let Some(value) = downcast!(baz => Foo::Baz) {
println!("value is a bool: {}", value);
}
if let Some((a, b)) = downcast!(bar => Foo::Bar, baz => Foo::Baz) {
println!("a is a u32: {}", a);
println!("b is a bool: {}", b);
}