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,
) -> EnumKp<Enum, Variant, &'a Enum, &'a Variant, &'a mut Enum, &'a mut Variant, for<'b> fn(&'b Enum) -> Option<&'b Variant>, for<'b> fn(&'b mut Enum) -> Option<&'b mut Variant>, fn(Variant) -> Enum>
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)
);