Skip to main content

enum_variant

Function enum_variant 

Source
pub fn enum_variant<'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 with both extraction and embedding for a specific variant

ยงExample

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

let kp = enum_variant(
    |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)
);