diff --git a/src/index/map_item.rs b/src/index/map_item.rs index f1d4b59..28bc582 100644 --- a/src/index/map_item.rs +++ b/src/index/map_item.rs @@ -20,7 +20,7 @@ pub use { impl<Key: 'static, Item: 'static> OuterViewPort<dyn IndexView<Key, Item = Item>> { pub fn map_item< DstItem: 'static, - F: Fn(&Item) -> DstItem + Send + Sync + 'static + F: Fn(&Key, &Item) -> DstItem + Send + Sync + 'static >( &self, f: F @@ -34,7 +34,7 @@ impl<Key: 'static, Item: 'static> OuterViewPort<dyn IndexView<Key, Item = Item>> pub struct MapIndexItem<Key, DstItem, SrcView, F> where SrcView: IndexView<Key> + ?Sized, - F: Fn(&SrcView::Item) -> DstItem + Send + Sync + F: Fn(&Key, &SrcView::Item) -> DstItem + Send + Sync { src_view: Option<Arc<SrcView>>, f: F, @@ -45,7 +45,7 @@ impl<Key, DstItem, SrcView, F> MapIndexItem<Key, DstItem, SrcView, F> where Key: 'static, DstItem: 'static, SrcView: IndexView<Key> + ?Sized + 'static, - F: Fn(&SrcView::Item) -> DstItem + Send + Sync + 'static + F: Fn(&Key, &SrcView::Item) -> DstItem + Send + Sync + 'static { fn new( port: InnerViewPort<dyn IndexView<Key, Item = DstItem>>, @@ -66,19 +66,19 @@ where Key: 'static, impl<Key, DstItem, SrcView, F> View for MapIndexItem<Key, DstItem, SrcView, F> where SrcView: IndexView<Key> + ?Sized, - F: Fn(&SrcView::Item) -> DstItem + Send + Sync + F: Fn(&Key, &SrcView::Item) -> DstItem + Send + Sync { type Msg = Key; } impl<Key, DstItem, SrcView, F> IndexView<Key> for MapIndexItem<Key, DstItem, SrcView, F> where SrcView: IndexView<Key> + ?Sized, - F: Fn(&SrcView::Item) -> DstItem + Send + Sync + F: Fn(&Key, &SrcView::Item) -> DstItem + Send + Sync { type Item = DstItem; fn get(&self, key: &Key) -> Option<Self::Item> { - self.src_view.as_ref()?.get(key).as_ref().map(&self.f) + self.src_view.as_ref()?.get(key).as_ref().map(|item| (self.f)(key, item)) } fn area(&self) -> Option<Vec<Key>> { @@ -88,7 +88,7 @@ where SrcView: IndexView<Key> + ?Sized, impl<Key, DstItem, SrcView, F> Observer<SrcView> for MapIndexItem<Key, DstItem, SrcView, F> where SrcView: IndexView<Key> + ?Sized, - F: Fn(&SrcView::Item) -> DstItem + Send + Sync + F: Fn(&Key, &SrcView::Item) -> DstItem + Send + Sync { fn reset(&mut self, view: Option<Arc<SrcView>>) { let old_area = self.area();