Skip to main content

variant_of

Function variant_of 

Source
pub fn variant_of<'a, Enum, Variant>(
    getter: for<'b> fn(&'b Enum) -> Option<&'b Variant>,
    setter: for<'b> fn(&'b mut Enum) -> Option<&'b mut Variant>,
    embedder: fn(Variant) -> Enum,
) -> EnumKpType<'a, Enum, Variant>
Expand description

Create an enum keypath for a specific variant with type inference

ยงExample

use rust_key_paths::variant_of;
enum MyEnum {
    A(String),
    B(i32),
}

let kp_a = variant_of(
    |e: &MyEnum| match e { MyEnum::A(s) => Some(s), _ => None },
    |e: &mut MyEnum| match e { MyEnum::A(s) => Some(s), _ => None },
    |s: String| MyEnum::A(s)
);