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