Trait tupl::NonEmptyTuple
source · pub trait NonEmptyTuple: Tuple {
type Head;
type Tail;
type TruncateHead: GrowableTuple;
type TruncateTail: GrowableTuple;
// Required methods
fn head(&self) -> &Self::Head;
fn head_mut(&mut self) -> &mut Self::Head;
fn tail(&self) -> &Self::Tail;
fn tail_mut(&mut self) -> &mut Self::Tail;
fn truncate_head(self) -> (Self::Head, Self::TruncateHead);
fn truncate_tail(self) -> (Self::TruncateTail, Self::Tail);
}Expand description
A trait representing tuples that are not empty. It is implemented for tuples of arity 1 to 50.
Required Associated Types§
sourcetype TruncateHead: GrowableTuple
type TruncateHead: GrowableTuple
This tuple with its head truncated.
sourcetype TruncateTail: GrowableTuple
type TruncateTail: GrowableTuple
This tuple with its tail truncated.
Required Methods§
sourcefn head(&self) -> &Self::Head
fn head(&self) -> &Self::Head
Returns a reference to the head of this tuple.
Examples
let tuple = (1, 2, 3);
assert_eq!(&1, tuple.head());sourcefn head_mut(&mut self) -> &mut Self::Head
fn head_mut(&mut self) -> &mut Self::Head
Returns a mutable reference to the head of this tuple.
Examples
let mut tuple = (1, 2, 3);
assert_eq!(&mut 1, tuple.head_mut());sourcefn tail(&self) -> &Self::Tail
fn tail(&self) -> &Self::Tail
Returns a reference to the tail of this tuple.
Examples
let tuple = (1, 2, 3);
assert_eq!(&3, tuple.tail());sourcefn tail_mut(&mut self) -> &mut Self::Tail
fn tail_mut(&mut self) -> &mut Self::Tail
Returns a mutable reference to the tail of this tuple.
Examples
let mut tuple = (1, 2, 3);
assert_eq!(&mut 3, tuple.tail_mut());sourcefn truncate_head(self) -> (Self::Head, Self::TruncateHead)
fn truncate_head(self) -> (Self::Head, Self::TruncateHead)
Consumes this tuple and truncates its head from the remaining elements.
Examples
let tuple = (1, 2, 3);
let tuple = tuple.truncate_head();
assert_eq!(tuple, (1, (2, 3)));sourcefn truncate_tail(self) -> (Self::TruncateTail, Self::Tail)
fn truncate_tail(self) -> (Self::TruncateTail, Self::Tail)
Consumes this tuple and truncates its tail from the remaining elements.
Examples
let tuple = (1, 2, 3);
let tuple = tuple.truncate_tail();
assert_eq!(tuple, ((1, 2), 3));