Skip to main content

zip_kps

Function zip_kps 

Source
pub fn zip_kps<'a, RootType, Value1, Value2>(
    kp1: &'a KpType<'a, RootType, Value1>,
    kp2: &'a KpType<'a, RootType, Value2>,
) -> impl Fn(&'a RootType) -> Option<(&'a Value1, &'a Value2)> + 'a
where RootType: 'a, Value1: 'a, Value2: 'a,
Expand description

Zip two keypaths together to create a tuple Works only with KpType (reference-based keypaths)

ยงExample

use rust_key_paths::{KpType, zip_kps};
struct User { name: String, age: i32 }
let user = User { name: "Alice".to_string(), age: 30 };
let name_kp = KpType::new(|u: &User| Some(&u.name), |_| None);
let age_kp = KpType::new(|u: &User| Some(&u.age), |_| None);
let zipped_fn = zip_kps(&name_kp, &age_kp);
assert_eq!(zipped_fn(&user), Some((&"Alice".to_string(), &30)));