field-ref

Field reference (like a member pointer to non-static data field in C++) for Rust

Example:

```Rust

[macro_use]

extern crate field_ref;

use field_ref::{Field, FieldMut};

struct Foo(u32, u32, f64); struct Bar { foo: Foo, x: u32, }

let fr1 = fieldrefof!(Bar => x); let fr2 = fieldrefof!(Bar => foo); let fr3 = fieldrefof!(Foo => 1); let fr4 = fieldrefof!(Bar => foo => 0);

let mut bar = Bar { foo: Foo(10, 20, 0.5), x: 30 };

asserteq!(bar.field(fr1), &30); asserteq!(fr1.get_ref(&bar), &30);

*bar.fieldmut(fr1) = 100; asserteq!(bar.x, 100);

*fr1.getmut(&mut bar) = 200; asserteq!(bar.x, 200);

asserteq!(bar.field(fr2.chain(fr3)), &20); asserteq!(bar.field(fr4), &10); ```