Crate field_access
source ·Expand description
§field_access
A library for dynamic access to struct fields with #![no_std]
support.
Field access is enabled by the FieldAccess
trait which can be implemented
using a derive macro by the same name.
use field_access::FieldAccess;
#[derive(FieldAccess)]
struct Foo {
a: u8
}
let mut foo = Foo { a: 1 };
// Immutable field access.
if let Some(field) = foo.field("a") {
assert_eq!(field.as_u8(), Some(1));
}
// Mutable field access.
if let Some(mut field) = foo.field_mut("a") {
assert_eq!(field.replace(42u8), Some(1));
}
assert_eq!(foo.a, 42);
§Cargo features
alloc
: Provide methods to interact with types from the Rust core allocation and collections library includingString
andVec<T>
. This feature pulls in thealloc
library as a dependency and is enabled by default.derive
: Provide a derive macro for theFieldAccess
trait. This feature is enabled by default.
§License
The source code of field_access is licensed under either of Apache License, Version 2.0 or MIT license at your option.
Structs§
- An immutable struct field reference.
- A mutable struct field reference.
- An immutable iterator over all fields of a struct.
Traits§
- Low-level struct field access.
- High-level struct field access.
Derive Macros§
- FieldAccess
derive
Derive macro for automatically implementingAnyFieldAccess
on structs.