Skip to main content

define_enum_as_mut_methods

Macro define_enum_as_mut_methods 

Source
macro_rules! define_enum_as_mut_methods {
    ($enum_type:ident, $(($variant:ident, $method:ident, $node_type:ty)),* $(,)?) => { ... };
}
Expand description

Generate a macro for the as_xxx_mut method for PlanNodeEnum

ยงExamples

use linkrs_query::define_enum_as_mut_methods;

enum MyPlanEnum {
    Start(i32),
    Project(i32),
}

define_enum_as_mut_methods! {
    MyPlanEnum,
    (Start, as_start_mut, i32),
    (Project, as_project_mut, i32),
}

let mut node = MyPlanEnum::Start(42);
if let Some(value) = node.as_start_mut() {
    *value += 1;
}
assert!(node.as_start_mut().is_some());
assert!(node.as_project_mut().is_none());