[−][src]Macro kai::variant
Maps an enum to an option for use with Iterator::filter_map
Syntax
ⓘThis example is not tested
variant!( pattern = input => output )
Example
use kai::*; enum Foo { Bar(bool), Baz(i32), } let bar = Foo::Bar(true); let baz = Foo::Baz(5); assert_eq!(None, variant!(Foo::Baz(i) = bar => i)); assert_eq!(Some(5), variant!(Foo::Baz(i) = baz => i)); let foos = vec![ Foo::Baz(5), Foo::Bar(false), Foo::Baz(2), ]; // Turns this let ints: Vec<i32> = foos .iter() .filter_map(|foo| if let Foo::Baz(i) = foo { Some(i) } else { None }) .cloned() .collect(); // Into this let ints: Vec<i32> = foos .iter() .filter_map(|foo| variant!(Foo::Baz(i) = foo => i)) .cloned() .collect(); assert_eq!(vec![5, 2], ints);