selfstack 0.3.0

A macro to generate self-referential structs
Documentation
struct A<'a> {
    x: &'a u32,
}

selfstack::selfstack! {
    mod store {
        use super::*;

        pub(super) struct Store<'a> {
            a: A<'a>,
        }
    }
}

#[test]
fn test_mut_ref() {
    let x = 1;
    let y = 2;
    let z = 3;
    let mut s = store::Store::new();
    let mut s_a = s.set_a(A { x: &x });
    {
        s_a.mut_a().x = &y;
    }
    assert_eq!(s_a.ref_a().x, &y);
    {
        let view = s_a.view();
        view.a.x = &z;
    }
    assert_eq!(s_a.ref_a().x, &z);
}