Skip to main content

StreamTupleJoin

Trait StreamTupleJoin 

Source
pub trait StreamTupleJoin<I, P>: StreamTuple<I>
where P: Presence,
{ type Item: Tuple<P>; }
Expand description

Stream tuple join.

Stream tuples are heterogeneous collections of streams, which is why they are the natural choice to represent joins. This trait is implemented for tuples of streams in sizes of 1 to 8, and is further specialized with the Presence markers to implement the following join strategies:

  • All: All items are required (inner join).
  • First: Only the first item is required (left join).
  • Any: All items are optional (outer join)

Extensions of this trait include:

Keeping the concretization of tuples of sizes 1 to 8 together with presence markers in this base trait allows to keep the join implementations focused.

Required Associated Types§

Source

type Item: Tuple<P>

Item type.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<I, T1> StreamTupleJoin<I, All> for (Stream<I, T1>,)
where (T1,): Tuple<All>,

Source§

impl<I, T1> StreamTupleJoin<I, Any> for (Stream<I, T1>,)
where (Option<T1>,): Tuple<Any>,

Source§

type Item = (Option<T1>,)

Source§

impl<I, T1> StreamTupleJoin<I, First> for (Stream<I, T1>,)
where (T1,): Tuple<First>,

Source§

impl<I, T1, T2> StreamTupleJoin<I, All> for (Stream<I, T1>, Stream<I, T2>)
where (T1, T2): Tuple<All>,

Source§

impl<I, T1, T2> StreamTupleJoin<I, Any> for (Stream<I, T1>, Stream<I, T2>)
where (Option<T1>, Option<T2>): Tuple<Any>,

Source§

type Item = (Option<T1>, Option<T2>)

Source§

impl<I, T1, T2> StreamTupleJoin<I, First> for (Stream<I, T1>, Stream<I, T2>)
where (T1, Option<T2>): Tuple<First>,

Source§

type Item = (T1, Option<T2>)

Source§

impl<I, T1, T2, T3> StreamTupleJoin<I, All> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>)

Source§

impl<I, T1, T2, T3> StreamTupleJoin<I, Any> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>)
where (Option<T1>, Option<T2>, Option<T3>): Tuple<Any>,

Source§

type Item = (Option<T1>, Option<T2>, Option<T3>)

Source§

impl<I, T1, T2, T3> StreamTupleJoin<I, First> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>)
where (T1, Option<T2>, Option<T3>): Tuple<First>,

Source§

type Item = (T1, Option<T2>, Option<T3>)

Source§

impl<I, T1, T2, T3, T4> StreamTupleJoin<I, All> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>)

Source§

impl<I, T1, T2, T3, T4> StreamTupleJoin<I, Any> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>)
where (Option<T1>, Option<T2>, Option<T3>, Option<T4>): Tuple<Any>,

Source§

type Item = (Option<T1>, Option<T2>, Option<T3>, Option<T4>)

Source§

impl<I, T1, T2, T3, T4> StreamTupleJoin<I, First> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>)
where (T1, Option<T2>, Option<T3>, Option<T4>): Tuple<First>,

Source§

type Item = (T1, Option<T2>, Option<T3>, Option<T4>)

Source§

impl<I, T1, T2, T3, T4, T5> StreamTupleJoin<I, All> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>, Stream<I, T5>)

Source§

impl<I, T1, T2, T3, T4, T5> StreamTupleJoin<I, Any> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>, Stream<I, T5>)
where (Option<T1>, Option<T2>, Option<T3>, Option<T4>, Option<T5>): Tuple<Any>,

Source§

type Item = (Option<T1>, Option<T2>, Option<T3>, Option<T4>, Option<T5>)

Source§

impl<I, T1, T2, T3, T4, T5> StreamTupleJoin<I, First> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>, Stream<I, T5>)
where (T1, Option<T2>, Option<T3>, Option<T4>, Option<T5>): Tuple<First>,

Source§

type Item = (T1, Option<T2>, Option<T3>, Option<T4>, Option<T5>)

Source§

impl<I, T1, T2, T3, T4, T5, T6> StreamTupleJoin<I, All> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>, Stream<I, T5>, Stream<I, T6>)

Source§

impl<I, T1, T2, T3, T4, T5, T6> StreamTupleJoin<I, Any> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>, Stream<I, T5>, Stream<I, T6>)
where (Option<T1>, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>): Tuple<Any>,

Source§

type Item = (Option<T1>, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>)

Source§

impl<I, T1, T2, T3, T4, T5, T6> StreamTupleJoin<I, First> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>, Stream<I, T5>, Stream<I, T6>)
where (T1, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>): Tuple<First>,

Source§

type Item = (T1, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>)

Source§

impl<I, T1, T2, T3, T4, T5, T6, T7> StreamTupleJoin<I, All> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>, Stream<I, T5>, Stream<I, T6>, Stream<I, T7>)

Source§

impl<I, T1, T2, T3, T4, T5, T6, T7> StreamTupleJoin<I, Any> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>, Stream<I, T5>, Stream<I, T6>, Stream<I, T7>)
where (Option<T1>, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>, Option<T7>): Tuple<Any>,

Source§

type Item = (Option<T1>, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>, Option<T7>)

Source§

impl<I, T1, T2, T3, T4, T5, T6, T7> StreamTupleJoin<I, First> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>, Stream<I, T5>, Stream<I, T6>, Stream<I, T7>)
where (T1, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>, Option<T7>): Tuple<First>,

Source§

type Item = (T1, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>, Option<T7>)

Source§

impl<I, T1, T2, T3, T4, T5, T6, T7, T8> StreamTupleJoin<I, All> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>, Stream<I, T5>, Stream<I, T6>, Stream<I, T7>, Stream<I, T8>)

Source§

impl<I, T1, T2, T3, T4, T5, T6, T7, T8> StreamTupleJoin<I, Any> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>, Stream<I, T5>, Stream<I, T6>, Stream<I, T7>, Stream<I, T8>)
where (Option<T1>, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>, Option<T7>, Option<T8>): Tuple<Any>,

Source§

type Item = (Option<T1>, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>, Option<T7>, Option<T8>)

Source§

impl<I, T1, T2, T3, T4, T5, T6, T7, T8> StreamTupleJoin<I, First> for (Stream<I, T1>, Stream<I, T2>, Stream<I, T3>, Stream<I, T4>, Stream<I, T5>, Stream<I, T6>, Stream<I, T7>, Stream<I, T8>)
where (T1, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>, Option<T7>, Option<T8>): Tuple<First>,

Source§

type Item = (T1, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>, Option<T7>, Option<T8>)

Implementors§