pub unsafe trait Lengthen<T>: Sized + GenericSequence<T> {
    type Longer: Shorten<T, Shorter = Self>;

    // Required methods
    fn append(self, last: T) -> Self::Longer;
    fn prepend(self, first: T) -> Self::Longer;
}
Expand description

Defines any GenericSequence which can be lengthened or extended by appending or prepending an element to it.

Any lengthened sequence can be shortened back to the original using pop_front or pop_back

Required Associated Types§

source

type Longer: Shorten<T, Shorter = Self>

GenericSequence that has one more element than Self

Required Methods§

source

fn append(self, last: T) -> Self::Longer

Returns a new array with the given element appended to the end of it.

Example:

let a = arr![i32; 1, 2, 3];

let b = a.append(4);

assert_eq!(b, arr![i32; 1, 2, 3, 4]);
source

fn prepend(self, first: T) -> Self::Longer

Returns a new array with the given element prepended to the front of it.

Example:

let a = arr![i32; 1, 2, 3];

let b = a.prepend(4);

assert_eq!(b, arr![i32; 4, 1, 2, 3]);

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<T, N> Lengthen<T> for GenericArray<T, N>
where N: ArrayLength<T> + Add<B1>, <N as Add<B1>>::Output: ArrayLength<T> + Sub<B1, Output = N>, <<N as Add<B1>>::Output as Sub<B1>>::Output: ArrayLength<T>,

§

type Longer = GenericArray<T, <N as Add<B1>>::Output>