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)> + 'awhere
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)));