use kathy::{Keyable, MapKeyPath};
#[derive(Keyable)]
struct Vec2 {
height: u16,
width: u16
}
#[derive(Keyable)]
struct Person {
name: &'static str,
dimensions: Vec2
}
fn main() {
let mut people = [
Person {
name: "Kathy",
dimensions: Vec2 {
height: 100,
width: 20
}
},
Person {
name: "Karen",
dimensions: Vec2 {
height: 120,
width: 40
}
},
Person {
name: "Kaley",
dimensions: Vec2 {
height: 140,
width: 60
}
}
];
people
.iter()
.map_kp(Person::dimensions.kp::<"height">())
.for_each(|height| println!("height: {height}"));
people
.iter_mut()
.map_kp(Person::dimensions.kp::<"width">())
.map(|width| *width * 2)
.for_each(|width| println!("width: {width}"));
people
.into_iter()
.map_kp(Person::name)
.for_each(|name| println!("name: {name}"));
}