pub struct JoinedValuesPlan<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F>where
L: MapQuery<Key = LK, Value = LV>,
R: MapQuery<Key = RK, Value = RV>,
LK: Hash + Eq + CellValue,
LV: CellValue,
RK: Hash + Eq + CellValue,
RV: CellValue,
JK: Hash + Eq + CellValue,
OV: CellValue,
FL: Fn(&LK, &LV) -> JK + Send + Sync + 'static,
FR: RightJoinKey<RK, RV, JK>,
F: Fn(&LK, &LV, &[(RK, RV)]) -> OV + Send + Sync + 'static,{ /* private fields */ }Expand description
A left join whose output is projected directly from the indexed matches.
Implementations§
Source§impl<L, R1, LK, LV, RK1, RV1, JK1, MV, FL1, FR1, FM1> JoinedValuesPlan<L, R1, LK, LV, RK1, RV1, JK1, MV, FL1, FR1, FM1>where
L: MapQuery<Key = LK, Value = LV> + PreservesMapKey<LK>,
R1: MapQuery<Key = RK1, Value = RV1>,
LK: Hash + Eq + CellValue,
LV: CellValue,
RK1: Hash + Eq + CellValue,
RV1: CellValue,
JK1: Hash + Eq + CellValue,
MV: CellValue,
FL1: Fn(&LK, &LV) -> JK1 + Send + Sync + 'static,
FR1: RightJoinKey<RK1, RV1, JK1>,
FM1: Fn(&LK, &LV, &[(RK1, RV1)]) -> MV + Send + Sync + 'static,
impl<L, R1, LK, LV, RK1, RV1, JK1, MV, FL1, FR1, FM1> JoinedValuesPlan<L, R1, LK, LV, RK1, RV1, JK1, MV, FL1, FR1, FM1>where
L: MapQuery<Key = LK, Value = LV> + PreservesMapKey<LK>,
R1: MapQuery<Key = RK1, Value = RV1>,
LK: Hash + Eq + CellValue,
LV: CellValue,
RK1: Hash + Eq + CellValue,
RV1: CellValue,
JK1: Hash + Eq + CellValue,
MV: CellValue,
FL1: Fn(&LK, &LV) -> JK1 + Send + Sync + 'static,
FR1: RightJoinKey<RK1, RV1, JK1>,
FM1: Fn(&LK, &LV, &[(RK1, RV1)]) -> MV + Send + Sync + 'static,
Sourcepub fn left_join_by<R2, RK2, RV2, JK2, FL2, FR2>(
self,
right: R2,
left_key: FL2,
right_key: FR2,
) -> TwoLeftJoinPlan<L, R1, R2, LK, LV, RK1, RV1, JK1, MV, RK2, RV2, JK2, FL1, FR1, DirectJoinProjection<FM1>, FL2, RequiredRightKey<FR2>>
pub fn left_join_by<R2, RK2, RV2, JK2, FL2, FR2>( self, right: R2, left_key: FL2, right_key: FR2, ) -> TwoLeftJoinPlan<L, R1, R2, LK, LV, RK1, RV1, JK1, MV, RK2, RV2, JK2, FL1, FR1, DirectJoinProjection<FM1>, FL2, RequiredRightKey<FR2>>
Extend a direct joined projection with a coordinated second left join.
Trait Implementations§
Source§impl<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F> MapQuery for JoinedValuesPlan<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F>where
L: MapQuery<Key = LK, Value = LV>,
R: MapQuery<Key = RK, Value = RV>,
LK: Hash + Eq + CellValue,
LV: CellValue,
RK: Hash + Eq + CellValue,
RV: CellValue,
JK: Hash + Eq + CellValue,
OV: CellValue,
FL: Fn(&LK, &LV) -> JK + Send + Sync + 'static,
FR: RightJoinKey<RK, RV, JK>,
F: Fn(&LK, &LV, &[(RK, RV)]) -> OV + Send + Sync + 'static,
impl<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F> MapQuery for JoinedValuesPlan<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F>where
L: MapQuery<Key = LK, Value = LV>,
R: MapQuery<Key = RK, Value = RV>,
LK: Hash + Eq + CellValue,
LV: CellValue,
RK: Hash + Eq + CellValue,
RV: CellValue,
JK: Hash + Eq + CellValue,
OV: CellValue,
FL: Fn(&LK, &LV) -> JK + Send + Sync + 'static,
FR: RightJoinKey<RK, RV, JK>,
F: Fn(&LK, &LV, &[(RK, RV)]) -> OV + Send + Sync + 'static,
Source§fn materialize(self) -> CellMap<Self::Key, Self::Value, CellImmutable>
fn materialize(self) -> CellMap<Self::Key, Self::Value, CellImmutable>
Auto Trait Implementations§
impl<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F> Freeze for JoinedValuesPlan<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F>
impl<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F> RefUnwindSafe for JoinedValuesPlan<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F>
impl<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F> Send for JoinedValuesPlan<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F>
impl<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F> Sync for JoinedValuesPlan<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F>
impl<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F> Unpin for JoinedValuesPlan<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F>
impl<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F> UnsafeUnpin for JoinedValuesPlan<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F>
impl<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F> UnwindSafe for JoinedValuesPlan<L, R, LK, LV, RK, RV, JK, OV, FL, FR, F>
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> FlatMapEntriesExt<K, V> for M
impl<K, V, M> FlatMapEntriesExt<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) -> impl MapQuery<Key = K, Value = (V, RV)>
fn inner_join<R, RV>(self, right: R) -> impl MapQuery<Key = K, Value = (V, RV)>
Inner join on equal map keys. Read more
Source§fn inner_join_fk<Rel, R>(
self,
right: R,
) -> RelationPlan<InnerJoinByPairPlan<Self, R, K, V, R::Key, Rel::Child, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, OptionalRightKey<impl Fn(&R::Key, &Rel::Child) -> Option<K> + Send + Sync + 'static>>, Rel>where
Rel: ForeignKeyRelation,
R: MapQuery<Value = Rel::Child>,
Rel::ForeignKey: IdFor<Rel::Parent, MapKey = K>,
fn inner_join_fk<Rel, R>(
self,
right: R,
) -> RelationPlan<InnerJoinByPairPlan<Self, R, K, V, R::Key, Rel::Child, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, OptionalRightKey<impl Fn(&R::Key, &Rel::Child) -> Option<K> + Send + Sync + 'static>>, Rel>where
Rel: ForeignKeyRelation,
R: MapQuery<Value = Rel::Child>,
Rel::ForeignKey: IdFor<Rel::Parent, MapKey = K>,
Inner join using foreign key relationship. 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, RequiredRightKey<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, RequiredRightKey<impl Fn(&K, &RV) -> K + Send + Sync + 'static>>
Left join on equal map keys. Read more
Source§fn left_join_fk<Rel, R>(
self,
right: R,
) -> RelationPlan<LeftJoinPlan<Self, R, K, V, R::Key, Rel::Child, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, OptionalRightKey<impl Fn(&R::Key, &Rel::Child) -> Option<K> + Send + Sync + 'static>>, Rel>where
Rel: ForeignKeyRelation,
R: MapQuery<Value = Rel::Child>,
Rel::ForeignKey: IdFor<Rel::Parent, MapKey = K>,
fn left_join_fk<Rel, R>(
self,
right: R,
) -> RelationPlan<LeftJoinPlan<Self, R, K, V, R::Key, Rel::Child, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, OptionalRightKey<impl Fn(&R::Key, &Rel::Child) -> Option<K> + Send + Sync + 'static>>, Rel>where
Rel: ForeignKeyRelation,
R: MapQuery<Value = Rel::Child>,
Rel::ForeignKey: IdFor<Rel::Parent, MapKey = 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, RequiredRightKey<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, RequiredRightKey<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) -> impl MapQuery<Key = K, Value = V>
fn left_semi_join<R, RV>(self, right: R) -> impl MapQuery<Key = K, Value = V>
Left semi join on equal map keys. Read more
Source§fn left_semi_join_fk<Rel, R>(
self,
right: R,
) -> RelationPlan<LeftSemiJoinPlan<Self, R, K, V, R::Key, Rel::Child, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, OptionalRightKey<impl Fn(&R::Key, &Rel::Child) -> Option<K> + Send + Sync + 'static>>, Rel>where
Rel: ForeignKeyRelation,
R: MapQuery<Value = Rel::Child>,
Rel::ForeignKey: IdFor<Rel::Parent, MapKey = K>,
fn left_semi_join_fk<Rel, R>(
self,
right: R,
) -> RelationPlan<LeftSemiJoinPlan<Self, R, K, V, R::Key, Rel::Child, K, impl Fn(&K, &V) -> K + Send + Sync + 'static, OptionalRightKey<impl Fn(&R::Key, &Rel::Child) -> Option<K> + Send + Sync + 'static>>, Rel>where
Rel: ForeignKeyRelation,
R: MapQuery<Value = Rel::Child>,
Rel::ForeignKey: IdFor<Rel::Parent, MapKey = 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,
) -> impl MapQuery<Key = K, Value = V>
fn left_semi_join_by<R, RK, RV, JK, FL, FR>( self, right: R, left_key: FL, right_key: FR, ) -> impl MapQuery<Key = K, Value = V>
Left semi join using explicit key extractors. Read more
Source§impl<K, V, M> MapEntriesExt<K, V> for M
impl<K, V, M> MapEntriesExt<K, V> for M
Source§fn map_entries<K2, V2, F>(self, f: F) -> impl MapQuery<Key = K2, Value = V2>
fn map_entries<K2, V2, F>(self, f: F) -> impl MapQuery<Key = K2, Value = V2>
Map every input row to exactly one output row with a unique output key. Read more
Convert this map query into a Clone-able multicast handle.
Source§impl<K, V, M> MapValuesExt<K, V> for M
impl<K, V, M> MapValuesExt<K, V> for M
Source§fn map_values<U, F>(self, f: F) -> MapValuesPlan<Self, K, V, U, F>
fn map_values<U, F>(self, f: F) -> MapValuesPlan<Self, K, V, U, F>
Map every value while retaining its input key.
Source§impl<K, V, M> MultiLeftJoinExt<K, V> for M
impl<K, V, M> MultiLeftJoinExt<K, V> for M
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,
) -> impl MapQuery<Key = K2, Value = V2>
fn project_cell<K2, V2, W, F>( self, mapper: F, ) -> impl MapQuery<Key = K2, Value = V2>
Reactive project variant: each row maps to a watchable optional output row. Read more