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 waterui::reactive::{Binding, binding, project::Project};
use waterui_macros::Project;

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

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

let projected = person_binding.project();
projected.name.set("Bob".to_string());
projected.age.set(25u32);

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