Skip to main content

Tuple

Trait Tuple 

Source
pub trait Tuple<P>: Value {
    type Arguments<'a>: TryFromValues<'a> + IntoOwned<Owned = Self>;
}
Expand description

Tuple.

This trait is used to define different configurations of tuples for join operators, which centers around the presence of values in the tuple. Note that the argument type defines the expected values in the tuple, and is used as the join operator’s own argument type.

In order to isolate lifetimes in the trait, and to omit the need for using higher-ranked trait bounds in each operator, the implementations account for the lifetimes with said higher-ranked trait bounds. While they are rather ugly, there’s no other way to express it without them.

This trait doesn’t have a bound on Presence, so we can keep operator implementations simpler, but it’s enforced on wrappers that use it.

Required Associated Types§

Source

type Arguments<'a>: TryFromValues<'a> + IntoOwned<Owned = Self>

Tuple arguments 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<T1> Tuple<All> for (T1,)
where Self: Value, for<'a> (&'a T1,): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1> Tuple<Any> for (Option<T1>,)
where Self: Value, for<'a> (Option<&'a T1>,): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1> Tuple<First> for (T1,)
where Self: Value, for<'a> (&'a T1,): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2> Tuple<All> for (T1, T2)
where Self: Value, for<'a> (&'a T1, &'a T2): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2> Tuple<Any> for (Option<T1>, Option<T2>)
where Self: Value, for<'a> (Option<&'a T1>, Option<&'a T2>): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2> Tuple<First> for (T1, Option<T2>)
where Self: Value, for<'a> (&'a T1, Option<&'a T2>): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3> Tuple<All> for (T1, T2, T3)
where Self: Value, for<'a> (&'a T1, &'a T2, &'a T3): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3> Tuple<Any> for (Option<T1>, Option<T2>, Option<T3>)
where Self: Value, for<'a> (Option<&'a T1>, Option<&'a T2>, Option<&'a T3>): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3> Tuple<First> for (T1, Option<T2>, Option<T3>)
where Self: Value, for<'a> (&'a T1, Option<&'a T2>, Option<&'a T3>): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3, T4> Tuple<All> for (T1, T2, T3, T4)
where Self: Value, for<'a> (&'a T1, &'a T2, &'a T3, &'a T4): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3, T4> Tuple<Any> for (Option<T1>, Option<T2>, Option<T3>, Option<T4>)
where Self: Value, for<'a> (Option<&'a T1>, Option<&'a T2>, Option<&'a T3>, Option<&'a T4>): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3, T4> Tuple<First> for (T1, Option<T2>, Option<T3>, Option<T4>)
where Self: Value, for<'a> (&'a T1, Option<&'a T2>, Option<&'a T3>, Option<&'a T4>): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3, T4, T5> Tuple<All> for (T1, T2, T3, T4, T5)
where Self: Value, for<'a> (&'a T1, &'a T2, &'a T3, &'a T4, &'a T5): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3, T4, T5> Tuple<Any> for (Option<T1>, Option<T2>, Option<T3>, Option<T4>, Option<T5>)
where Self: Value, for<'a> (Option<&'a T1>, Option<&'a T2>, Option<&'a T3>, Option<&'a T4>, Option<&'a T5>): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3, T4, T5> Tuple<First> for (T1, Option<T2>, Option<T3>, Option<T4>, Option<T5>)
where Self: Value, for<'a> (&'a T1, Option<&'a T2>, Option<&'a T3>, Option<&'a T4>, Option<&'a T5>): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3, T4, T5, T6> Tuple<All> for (T1, T2, T3, T4, T5, T6)
where Self: Value, for<'a> (&'a T1, &'a T2, &'a T3, &'a T4, &'a T5, &'a T6): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3, T4, T5, T6> Tuple<Any> for (Option<T1>, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>)
where Self: Value, for<'a> (Option<&'a T1>, Option<&'a T2>, Option<&'a T3>, Option<&'a T4>, Option<&'a T5>, Option<&'a T6>): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3, T4, T5, T6> Tuple<First> for (T1, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>)
where Self: Value, for<'a> (&'a T1, Option<&'a T2>, Option<&'a T3>, Option<&'a T4>, Option<&'a T5>, Option<&'a T6>): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3, T4, T5, T6, T7> Tuple<All> for (T1, T2, T3, T4, T5, T6, T7)
where Self: Value, for<'a> (&'a T1, &'a T2, &'a T3, &'a T4, &'a T5, &'a T6, &'a T7): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3, T4, T5, T6, T7> Tuple<Any> for (Option<T1>, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>, Option<T7>)
where Self: Value, for<'a> (Option<&'a T1>, Option<&'a T2>, Option<&'a T3>, Option<&'a T4>, Option<&'a T5>, Option<&'a T6>, Option<&'a T7>): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3, T4, T5, T6, T7> Tuple<First> for (T1, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>, Option<T7>)
where Self: Value, for<'a> (&'a T1, Option<&'a T2>, Option<&'a T3>, Option<&'a T4>, Option<&'a T5>, Option<&'a T6>, Option<&'a T7>): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8> Tuple<All> for (T1, T2, T3, T4, T5, T6, T7, T8)
where Self: Value, for<'a> (&'a T1, &'a T2, &'a T3, &'a T4, &'a T5, &'a T6, &'a T7, &'a T8): TryFromValues<'a> + IntoOwned<Owned = Self>,

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8> Tuple<Any> for (Option<T1>, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>, Option<T7>, Option<T8>)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8> Tuple<First> for (T1, Option<T2>, Option<T3>, Option<T4>, Option<T5>, Option<T6>, Option<T7>, Option<T8>)

Implementors§