macro_rules! refresh_source_methods {
() => {
fn refresh(&self, item: &T)
where
Self: crate::cache::ISourceCache<T, K>,
{
self.edit(&mut |updater: &mut dyn crate::cache::ISourceUpdater<T, K>| updater.refresh_item(item));
}
fn refresh_items(&self, items: impl IntoIterator<Item = T>)
where
Self: crate::cache::ISourceCache<T, K>,
{
let mut items = Some(items.into_iter().collect::<Vec<T>>());
self.edit(&mut |updater: &mut dyn crate::cache::ISourceUpdater<T, K>| {
if let Some(items) = items.take() {
updater.refresh_items(&mut items.into_iter());
}
});
}
fn refresh_all(&self)
where
Self: crate::cache::ISourceCache<T, K>,
{
self.edit(&mut |updater: &mut dyn crate::cache::ISourceUpdater<T, K>| updater.refresh_all());
}
};
}
pub(crate) use refresh_source_methods;