NonUnaryTuple

Trait NonUnaryTuple 

Source
pub trait NonUnaryTuple: NonEmptyTuple<TruncateHead: NonEmptyTuple<Tail = Self::Tail>, TruncateTail: NonEmptyTuple<Head = Self::Head>> {
    type TruncateHeadTail: GrowableTuple<Prepend<Self::Head> = Self::TruncateTail, Append<Self::Tail> = Self::TruncateHead>;

    // Required methods
    fn head_tail(&self) -> (&Self::Head, &Self::Tail);
    fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail);
    fn truncate_head_tail(
        self,
    ) -> (Self::Head, Self::TruncateHeadTail, Self::Tail);
}
Expand description

Tuples that not unary nor empty. Implemented for sized tuples of arity 2 to 32.

Required Associated Types§

Source

type TruncateHeadTail: GrowableTuple<Prepend<Self::Head> = Self::TruncateTail, Append<Self::Tail> = Self::TruncateHead>

This tuple with its head and tail truncated.

Required Methods§

Source

fn head_tail(&self) -> (&Self::Head, &Self::Tail)

Returns a reference to the head and tail of this tuple.

§Examples
let tuple = (1, 2, 3, 4);
let (head, tail) = tuple.head_tail();
assert_eq!((&1, &4), (head, tail));
Source

fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail)

Returns a mutable reference to the head and tail of this tuple.

§Examples
let mut tuple = (1, 2, 3, 4);
let (head, tail) = tuple.head_tail_mut();
assert_eq!((&mut 1, &mut 4), (head, tail));
Source

fn truncate_head_tail(self) -> (Self::Head, Self::TruncateHeadTail, Self::Tail)

Consumes this tuple and truncates its head and tail from the remaining elements.

§Examples
let tuple = (1, 2, 3, 4);
let (head, tuple, tail) = tuple.truncate_head_tail();
assert_eq!((1, (2, 3), 4), (head, tuple, tail));

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, T2> NonUnaryTuple for (T1, T2)

Source§

type TruncateHeadTail = ()

Source§

fn head_tail(&self) -> (&Self::Head, &Self::Tail)

Source§

fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail)

Source§

fn truncate_head_tail(self) -> (Self::Head, Self::TruncateHeadTail, Self::Tail)

Source§

impl<T1, T2, T3> NonUnaryTuple for (T1, T2, T3)

Source§

type TruncateHeadTail = (T2,)

Source§

fn head_tail(&self) -> (&Self::Head, &Self::Tail)

Source§

fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail)

Source§

fn truncate_head_tail(self) -> (Self::Head, Self::TruncateHeadTail, Self::Tail)

Source§

impl<T1, T2, T3, T4> NonUnaryTuple for (T1, T2, T3, T4)

Source§

type TruncateHeadTail = (T2, T3)

Source§

fn head_tail(&self) -> (&Self::Head, &Self::Tail)

Source§

fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail)

Source§

fn truncate_head_tail(self) -> (Self::Head, Self::TruncateHeadTail, Self::Tail)

Source§

impl<T1, T2, T3, T4, T5> NonUnaryTuple for (T1, T2, T3, T4, T5)

Source§

type TruncateHeadTail = (T2, T3, T4)

Source§

fn head_tail(&self) -> (&Self::Head, &Self::Tail)

Source§

fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail)

Source§

fn truncate_head_tail(self) -> (Self::Head, Self::TruncateHeadTail, Self::Tail)

Source§

impl<T1, T2, T3, T4, T5, T6> NonUnaryTuple for (T1, T2, T3, T4, T5, T6)

Source§

type TruncateHeadTail = (T2, T3, T4, T5)

Source§

fn head_tail(&self) -> (&Self::Head, &Self::Tail)

Source§

fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail)

Source§

fn truncate_head_tail(self) -> (Self::Head, Self::TruncateHeadTail, Self::Tail)

Source§

impl<T1, T2, T3, T4, T5, T6, T7> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7)

Source§

type TruncateHeadTail = (T2, T3, T4, T5, T6)

Source§

fn head_tail(&self) -> (&Self::Head, &Self::Tail)

Source§

fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail)

Source§

fn truncate_head_tail(self) -> (Self::Head, Self::TruncateHeadTail, Self::Tail)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8)

Source§

type TruncateHeadTail = (T2, T3, T4, T5, T6, T7)

Source§

fn head_tail(&self) -> (&Self::Head, &Self::Tail)

Source§

fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail)

Source§

fn truncate_head_tail(self) -> (Self::Head, Self::TruncateHeadTail, Self::Tail)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

type TruncateHeadTail = (T2, T3, T4, T5, T6, T7, T8)

Source§

fn head_tail(&self) -> (&Self::Head, &Self::Tail)

Source§

fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail)

Source§

fn truncate_head_tail(self) -> (Self::Head, Self::TruncateHeadTail, Self::Tail)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

type TruncateHeadTail = (T2, T3, T4, T5, T6, T7, T8, T9)

Source§

fn head_tail(&self) -> (&Self::Head, &Self::Tail)

Source§

fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail)

Source§

fn truncate_head_tail(self) -> (Self::Head, Self::TruncateHeadTail, Self::Tail)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

type TruncateHeadTail = (T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

fn head_tail(&self) -> (&Self::Head, &Self::Tail)

Source§

fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail)

Source§

fn truncate_head_tail(self) -> (Self::Head, Self::TruncateHeadTail, Self::Tail)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

type TruncateHeadTail = (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

fn head_tail(&self) -> (&Self::Head, &Self::Tail)

Source§

fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail)

Source§

fn truncate_head_tail(self) -> (Self::Head, Self::TruncateHeadTail, Self::Tail)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)

Source§

type TruncateHeadTail = (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

fn head_tail(&self) -> (&Self::Head, &Self::Tail)

Source§

fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail)

Source§

fn truncate_head_tail(self) -> (Self::Head, Self::TruncateHeadTail, Self::Tail)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)

Source§

type TruncateHeadTail = (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)

Source§

fn head_tail(&self) -> (&Self::Head, &Self::Tail)

Source§

fn head_tail_mut(&mut self) -> (&mut Self::Head, &mut Self::Tail)

Source§

fn truncate_head_tail(self) -> (Self::Head, Self::TruncateHeadTail, Self::Tail)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31)

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32> NonUnaryTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32)

Implementors§