Skip to content

voxell-tech/field_path

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Field Path

License Crates.io Downloads Docs CI Discord

Field Path provides a lightweight and type-safe abstraction for referencing and accessing nested fields within structs.

The crate is designed to make it easier to generically inspect or mutate fields without relying on heavy reflection systems or unsafe code. It does this through a combination of field identifiers and accessors that preserve type information.

Core Concepts

  • Field: Represents a unique, type-safe identifier for a field path within a struct.
  • Accessor: A generic wrapper providing read and write access to a field.
  • FieldAccessor: A container pairing a Field with its Accessor, ensuring both always refer to the same field path.

Together, these components allow building flexible systems that can access or manipulate struct data without tightly coupling to specific types.

Example

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

#[derive(Default)]
struct Vec2<T> {
    pub x: T,
    pub y: T,
}

const FIELD_ACC: FieldAccessor<Vec2<f32>, f32> = field_accessor!(<Vec2<f32>>::x);

assert_eq!(FIELD_ACC.field.field_path(), "::x");

let mut v = Vec2::default();
*FIELD_ACC.accessor.get_mut(&mut v) = 42.0;
assert_eq!(FIELD_ACC.accessor.get_ref(&v), &42.0);

Join the community!

You can join us on the Voxell discord server.

License

field_path is dual-licensed under either:

This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem and there are very good reasons to include both.

About

Type-safe, no-std field access and reflection utilities.

Resources

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

 
 
 

Contributors

Languages