pathmod 0.1.3

Re-export crate for pathmod
Documentation
use pathmod::prelude::*;

#[derive(Accessor, Debug, PartialEq)]
struct Pair(i32, i64);

#[derive(Accessor, Debug, PartialEq)]
struct Wrapper(Pair);

#[test]
fn tuple_field_accessors_work() {
    let mut p = Pair(1, 2);
    let a0 = Pair::acc_0();
    let a1 = Pair::acc_1();

    assert_eq!(*a0.get(&p), 1);
    assert_eq!(*a1.get(&p), 2);

    a0.set(&mut p, 10);
    a1.set_mut(&mut p, |v| *v += 5);
    assert_eq!(p.0, 10);
    assert_eq!(p.1, 7);

    let c = 99;
    a0.set_clone(&mut p, &c);
    assert_eq!(p.0, 99);
}

#[test]
fn compose_through_tuple() {
    let mut w = Wrapper(Pair(3, 4));
    let acc_pair = Wrapper::acc_0();
    let acc_second = Pair::acc_1();
    let acc = acc_pair.compose(acc_second);

    assert_eq!(*acc.get(&w), 4);
    acc.set_mut(&mut w, |v| *v *= 2);
    assert_eq!(w.0 .1, 8);
}