Project

Derive Macro Project 

Source
#[derive(Project)]
Expand description

Derive macro for implementing the Project trait on structs.

This macro automatically generates a Project implementation that allows decomposing a struct binding into separate bindings for each field.

§Examples

use nami::{Binding, binding};
use nami_derive::Project;

#[derive(Project,Clone,Debug)]
struct Person {
    name: String,
    age: u32,
}

let person_binding: Binding<Person> = binding(Person {
    name: "Alice".to_string(),
    age: 30,
});

let mut projected = person_binding.project();
projected.name.set_from("Bob");
projected.age.set(25);

let person = person_binding.get();
assert_eq!(person.name, "Bob");
assert_eq!(person.age, 25);