Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,26 +33,28 @@ types.
## Example

```rust
use field_path::registry::FieldAccessorRegistry;
use field_path::field;
use field_path::field_accessor;
use field_path::field_accessor::FieldAccessor;
use field_path::registry::FieldAccessorRegistry;

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

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

let mut registry = FieldAccessorRegistry::default();
let field = field!(<Vec2<f32>>::x);

// Register accessors.
registry.register_field(field_accessor!(<Vec2<f32>>::x));
registry.register_field(FIELD_ACC);

// Access field generically.
let mut v = Vec2::default();
let accessor =
registry.get::<Vec2<f32>, f32>(&field.untyped()).unwrap();
registry.get::<Vec2<f32>, f32>(&FIELD_ACC.field.untyped()).unwrap();

*accessor.get_mut(&mut v) = 42.0;
assert_eq!(accessor.get_ref(&v), &42.0);
Expand Down
12 changes: 6 additions & 6 deletions src/field.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@ use crate::field;
/// A `Field` can also be created at compile time, allowing us to
/// create `const` or `static` fields.
///
/// # Validation
/// ## Validation
///
/// The [`field!`] macro ensures that both the path and type used are
/// valid. Constructing `Field` manually may result in mismatches.
///
/// # Example
/// ## Example
/// ```
/// use field_path::field::Field;
/// use field_path::field;
/// use field_path::field::Field;
/// use field_path::stringify_field;
///
/// struct Player {
Expand Down Expand Up @@ -166,11 +166,11 @@ impl<S, T> _FieldBuilder<S, T> {

/// Creates a [`Field`] with path and type safety.
///
/// # Example
/// ## Example
///
/// ```
/// use field_path::field::Field;
/// use field_path::field;
/// use field_path::field::Field;
///
/// struct Player {
/// name: String,
Expand Down Expand Up @@ -314,7 +314,7 @@ where
/// auto-completion of nested fields while still being able to generate
/// "stringify" field paths from raw tokens!
///
/// # Example
/// ## Example
///
/// ```
/// use field_path::stringify_field;
Expand Down
4 changes: 2 additions & 2 deletions src/registry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ impl FieldAccessorRegistry {
/// Provides convenient registration of typed accessors and
/// retrieval as typed [`Accessor`]s with runtime checking.
///
/// # Example
/// ## Example
/// ```
/// use field_path::registry::AccessorRegistry;
/// use field_path::accessor;
/// use field_path::registry::AccessorRegistry;
///
/// struct Foo { value: i32 }
///
Expand Down
Loading