13 releases

new 0.1.11 Nov 4, 2024
0.1.9 Sep 3, 2024
0.1.8 Jun 2, 2024
0.1.5 Mar 1, 2024
0.1.2 Oct 19, 2023

#375 in Data structures

Download history 34/week @ 2024-07-17 41/week @ 2024-07-24 23/week @ 2024-07-31 26/week @ 2024-08-07 532/week @ 2024-08-14 208/week @ 2024-08-21 635/week @ 2024-08-28 209/week @ 2024-09-04 553/week @ 2024-09-11 361/week @ 2024-09-18 74/week @ 2024-09-25 506/week @ 2024-10-02 148/week @ 2024-10-09 264/week @ 2024-10-16 8/week @ 2024-10-23 102/week @ 2024-10-30

549 downloads per month
Used in 2 crates (via lcax_convert)

MIT/Apache

31KB
326 lines

field_access

Build Status crates.io docs.rs License: Apache 2.0 License: MIT

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 including String and Vec<T>. This feature pulls in the alloc library as a dependency and is enabled by default.
  • derive: Provide a derive macro for the FieldAccess 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.

Dependencies

~105KB