Skip to main content

field_accessor

Macro field_accessor 

Source
macro_rules! field_accessor {
    (<$source:ty>$(::$field:tt)*) => { ... };
}
Expand description

Creates a FieldAccessor that ensures both Field and Accessor are pointing to the same field path.

ยงExample

use field_path::field_accessor;
use field_path::field_accessor::FieldAccessor;

struct Foo { value: i32 }

const FOO_FIELD_ACC: FieldAccessor<Foo, i32> = field_accessor!(<Foo>::value);

assert_eq!(FOO_FIELD_ACC.field.field_path(), "::value");

let mut foo = Foo { value: 42 };

assert_eq!(FOO_FIELD_ACC.accessor.get_ref(&foo), &42);
*FOO_FIELD_ACC.accessor.get_mut(&mut foo) = 999;
assert_eq!(foo.value, 999);