Expand description
Derive macros for Pathmod
This crate provides two derives:
#[derive(Accessor)]for structs (named or tuple), generating const field accessors likeacc_<field>()oracc_<idx>(), plus reconstruction helperswith_*.#[derive(EnumAccess)]for enums (MVP: tuple variants with exactly one field), generating helpers likeis_<variant>,as_<variant>,as_<variant>_mut,set_<variant>, andmap_<variant>.
Most users should depend on the re-export crate pathmod and import:
use pathmod::prelude::*;Example — struct accessors and composition
use pathmod::prelude::*;
#[derive(Accessor, Debug, PartialEq)]
struct Bar { x: i32 }
#[derive(Accessor, Debug, PartialEq)]
struct Foo { a: i32, b: Bar }
let mut foo = Foo { a: 1, b: Bar { x: 2 } };
let acc_bx = Foo::acc_b().compose(Bar::acc_x());
acc_bx.set_mut(&mut foo, |v| *v += 5);
assert_eq!(foo.b.x, 7);Example — enum helpers (tuple single-field variants)
use pathmod::prelude::*;
#[derive(EnumAccess, Debug, PartialEq)]
enum Msg { Int(i32), Text(String) }
let mut m = Msg::Int(5);
assert!(m.is_int());
m.map_int(|v| *v += 10);
assert_eq!(m, Msg::Int(15));
m.set_text("hi".to_string());
assert!(m.is_text());Derive Macros§
- Accessor
- Derive field accessors for a struct (named or tuple).
- Enum
Access - Derive helpers for enum variants (MVP: tuple variants with exactly one field).