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)
);