macro_rules! right_join_methods {
() => {
fn right_join<TR: Clone + 'static, KR: Eq + std::hash::Hash + Clone + 'static, D: Clone + 'static>(
&self,
right: std::rc::Rc<dyn ferroui_system::IObservable<crate::cache::ChangeSet<TR, KR>>>,
right_key_selector: impl Fn(&TR) -> K + 'static,
result_selector: impl Fn(Option<&T>, &TR) -> D + 'static,
) -> std::rc::Rc<dyn ferroui_system::IObservable<crate::cache::ChangeSet<D, KR>>> {
self.right_join_with_key(right, right_key_selector, move |_: &KR, left: Option<&T>, right: &TR| result_selector(left, right))
}
fn right_join_with_key<TR: Clone + 'static, KR: Eq + std::hash::Hash + Clone + 'static, D: Clone + 'static>(
&self,
right: std::rc::Rc<dyn ferroui_system::IObservable<crate::cache::ChangeSet<TR, KR>>>,
right_key_selector: impl Fn(&TR) -> K + 'static,
result_selector: impl Fn(&KR, Option<&T>, &TR) -> D + 'static,
) -> std::rc::Rc<dyn ferroui_system::IObservable<crate::cache::ChangeSet<D, KR>>> {
crate::cache::internal::right_join(self.change_sets(), right, std::rc::Rc::new(right_key_selector), std::rc::Rc::new(result_selector))
}
};
}
pub(crate) use right_join_methods;