pub struct ProjectCellPlan<S, K, V, K2, V2, W, F>where
S: MapQuery<K, V>,
K: Hash + Eq + CellValue,
V: CellValue,
K2: Hash + Eq + CellValue,
V2: CellValue,
W: Watchable<Option<(K2, V2)>> + Gettable<Option<(K2, V2)>> + Clone + Send + Sync + 'static,
F: Fn(&K, &V) -> W + Send + Sync + 'static,{ /* private fields */ }Expand description
Plan node for ProjectCellExt::project_cell.
Each source row maps to a Watchable<Option<(K2, V2)>>; the watchable’s
emissions drive that row’s output. Some((k, v)) includes/updates the row;
None excludes it.
Not Clone: cloning a plan would silently duplicate per-row subscription
work; share by materializing once.
Trait Implementations§
Source§impl<S, K, V, K2, V2, W, F> MapQuery<K2, V2> for ProjectCellPlan<S, K, V, K2, V2, W, F>
impl<S, K, V, K2, V2, W, F> MapQuery<K2, V2> for ProjectCellPlan<S, K, V, K2, V2, W, F>
Source§fn materialize(self) -> CellMap<K, V, CellImmutable>
fn materialize(self) -> CellMap<K, V, CellImmutable>
Auto Trait Implementations§
impl<S, K, V, K2, V2, W, F> Freeze for ProjectCellPlan<S, K, V, K2, V2, W, F>where
S: Freeze,
impl<S, K, V, K2, V2, W, F> RefUnwindSafe for ProjectCellPlan<S, K, V, K2, V2, W, F>where
S: RefUnwindSafe,
F: RefUnwindSafe,
impl<S, K, V, K2, V2, W, F> Send for ProjectCellPlan<S, K, V, K2, V2, W, F>
impl<S, K, V, K2, V2, W, F> Sync for ProjectCellPlan<S, K, V, K2, V2, W, F>
impl<S, K, V, K2, V2, W, F> Unpin for ProjectCellPlan<S, K, V, K2, V2, W, F>where
S: Unpin,
impl<S, K, V, K2, V2, W, F> UnsafeUnpin for ProjectCellPlan<S, K, V, K2, V2, W, F>where
S: UnsafeUnpin,
impl<S, K, V, K2, V2, W, F> UnwindSafe for ProjectCellPlan<S, K, V, K2, V2, W, F>where
S: UnwindSafe,
F: RefUnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<K, V, M> CountByExt<K, V> for M
impl<K, V, M> CountByExt<K, V> for M
Source§impl<K, V, M> GroupByExt<K, V> for M
impl<K, V, M> GroupByExt<K, V> for M
Source§impl<K, V, M> InnerJoinExt<K, V> for M
impl<K, V, M> InnerJoinExt<K, V> for M
Source§fn inner_join<R, RV>(self, right: R) -> InnerJoinByKeyPlan<Self, R, K, V, RV>
fn inner_join<R, RV>(self, right: R) -> InnerJoinByKeyPlan<Self, R, K, V, RV>
Inner join on equal map keys. Read more
Source§fn inner_join_fk<R, RK, RV>(
self,
right: R,
) -> InnerJoinByPairPlan<Self, R, K, V, RK, RV, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, impl Fn(&RK, &RV) -> K + Send + Sync + 'static>where
R: MapQuery<RK, RV>,
RK: Hash + Eq + CellValue,
RV: CellValue + HasForeignKey<V>,
<<RV as HasForeignKey<V>>::ForeignKey as IdFor<V>>::MapKey: Into<K>,
fn inner_join_fk<R, RK, RV>(
self,
right: R,
) -> InnerJoinByPairPlan<Self, R, K, V, RK, RV, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, impl Fn(&RK, &RV) -> K + Send + Sync + 'static>where
R: MapQuery<RK, RV>,
RK: Hash + Eq + CellValue,
RV: CellValue + HasForeignKey<V>,
<<RV as HasForeignKey<V>>::ForeignKey as IdFor<V>>::MapKey: Into<K>,
Inner join using foreign key relationship. Read more
Source§fn inner_join_by<R, RK, RV, JK, FL, FR>(
self,
right: R,
left_key: FL,
right_key: FR,
) -> InnerJoinByPairPlan<Self, R, K, V, RK, RV, JK, FL, FR>
fn inner_join_by<R, RK, RV, JK, FL, FR>( self, right: R, left_key: FL, right_key: FR, ) -> InnerJoinByPairPlan<Self, R, K, V, RK, RV, JK, FL, FR>
Inner join using explicit key extractors. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<K, V, M> LeftJoinExt<K, V> for M
impl<K, V, M> LeftJoinExt<K, V> for M
Source§fn left_join<R, RV>(
self,
right: R,
) -> LeftJoinPlan<Self, R, K, V, K, RV, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, impl Fn(&K, &RV) -> K + Send + Sync + 'static>
fn left_join<R, RV>( self, right: R, ) -> LeftJoinPlan<Self, R, K, V, K, RV, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, impl Fn(&K, &RV) -> K + Send + Sync + 'static>
Left join on equal map keys. Read more
Source§fn left_join_fk<R, RK, RV>(
self,
right: R,
) -> LeftJoinPlan<Self, R, K, V, RK, RV, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, impl Fn(&RK, &RV) -> K + Send + Sync + 'static>where
R: MapQuery<RK, RV>,
RK: Hash + Eq + CellValue,
RV: CellValue + HasForeignKey<V>,
<<RV as HasForeignKey<V>>::ForeignKey as IdFor<V>>::MapKey: Into<K>,
fn left_join_fk<R, RK, RV>(
self,
right: R,
) -> LeftJoinPlan<Self, R, K, V, RK, RV, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, impl Fn(&RK, &RV) -> K + Send + Sync + 'static>where
R: MapQuery<RK, RV>,
RK: Hash + Eq + CellValue,
RV: CellValue + HasForeignKey<V>,
<<RV as HasForeignKey<V>>::ForeignKey as IdFor<V>>::MapKey: Into<K>,
Left join using foreign key relationship. Read more
Source§fn left_join_by<R, RK, RV, JK, FL, FR>(
self,
right: R,
left_key: FL,
right_key: FR,
) -> LeftJoinPlan<Self, R, K, V, RK, RV, JK, FL, FR>
fn left_join_by<R, RK, RV, JK, FL, FR>( self, right: R, left_key: FL, right_key: FR, ) -> LeftJoinPlan<Self, R, K, V, RK, RV, JK, FL, FR>
Left join using explicit key extractors. Read more
Source§impl<K, V, M> LeftSemiJoinExt<K, V> for M
impl<K, V, M> LeftSemiJoinExt<K, V> for M
Source§fn left_semi_join<R, RV>(
self,
right: R,
) -> LeftSemiJoinPlan<Self, R, K, V, K, RV, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, impl Fn(&K, &RV) -> K + Send + Sync + 'static>
fn left_semi_join<R, RV>( self, right: R, ) -> LeftSemiJoinPlan<Self, R, K, V, K, RV, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, impl Fn(&K, &RV) -> K + Send + Sync + 'static>
Left semi join on equal map keys. Read more
Source§fn left_semi_join_fk<R, RK, RV>(
self,
right: R,
) -> LeftSemiJoinPlan<Self, R, K, V, RK, RV, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, impl Fn(&RK, &RV) -> K + Send + Sync + 'static>where
R: MapQuery<RK, RV>,
RK: Hash + Eq + CellValue,
RV: CellValue + HasForeignKey<V>,
<<RV as HasForeignKey<V>>::ForeignKey as IdFor<V>>::MapKey: Into<K>,
fn left_semi_join_fk<R, RK, RV>(
self,
right: R,
) -> LeftSemiJoinPlan<Self, R, K, V, RK, RV, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, impl Fn(&RK, &RV) -> K + Send + Sync + 'static>where
R: MapQuery<RK, RV>,
RK: Hash + Eq + CellValue,
RV: CellValue + HasForeignKey<V>,
<<RV as HasForeignKey<V>>::ForeignKey as IdFor<V>>::MapKey: Into<K>,
Left semi join using foreign key relationship. Read more
Source§fn left_semi_join_by<R, RK, RV, JK, FL, FR>(
self,
right: R,
left_key: FL,
right_key: FR,
) -> LeftSemiJoinPlan<Self, R, K, V, RK, RV, JK, FL, FR>
fn left_semi_join_by<R, RK, RV, JK, FL, FR>( self, right: R, left_key: FL, right_key: FR, ) -> LeftSemiJoinPlan<Self, R, K, V, RK, RV, JK, FL, FR>
Left semi join using explicit key extractors. Read more
Convert this map query into a Clone-able multicast handle.
Source§impl<K, V, M> MultiLeftJoinExt<K, V> for M
impl<K, V, M> MultiLeftJoinExt<K, V> for M
Source§fn multi_left_join_by<R, RK, RV, JK, FL, FR>(
self,
right: R,
left_keys: FL,
right_key: FR,
) -> MultiLeftJoinPlan<Self, R, K, V, RK, RV, JK, FL, FR>
fn multi_left_join_by<R, RK, RV, JK, FL, FR>( self, right: R, left_keys: FL, right_key: FR, ) -> MultiLeftJoinPlan<Self, R, K, V, RK, RV, JK, FL, FR>
Left join where each left item maps to multiple join keys. Read more
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<K, V, M> ProjectCellExt<K, V> for M
impl<K, V, M> ProjectCellExt<K, V> for M
Source§fn project_cell<K2, V2, W, F>(
self,
mapper: F,
) -> ProjectCellPlan<Self, K, V, K2, V2, W, F>
fn project_cell<K2, V2, W, F>( self, mapper: F, ) -> ProjectCellPlan<Self, K, V, K2, V2, W, F>
Reactive project variant: each row maps to a watchable optional output row. Read more