Skip to main content

Destaque

Struct Destaque 

Source
pub struct Destaque<T, const CAP: usize, IDX, S: Storage = Bare> { /* private fields */ }
Available on _destaqueยทยท only.
Expand description

๐Ÿ—ƒ๏ธ A static double-ended queue and stack backed by an Array.


๐Ÿ“ data/layout/queue


It is generic in respect to its elements (T), capacity (CAP), index size (IDX) and storage (S).

The index size will upper-bound the capacity to the maximum for that type, e.g. u8::MAX for DestaqueU8.

The index size determines the maximum possible number of elements in the destaque, thereby upper-bounding the capacity to the maximum value representable by the index type. For example, u8::MAX for DestaqueU8.

The total size in bytes of the stack may be influenced by the chosen index size, depending on the size and alignment of the elements. This difference could only be significant for small capacities, as only one index is stored.

See also the related aliases that specify IDX: DestaqueU8, [DestaqueU16], [DestaqueU32], [DestaqueUsize], and the related traits: DataQueue, DataDeque, DataStack, DataDesta.

ยงMethods

It implements methods that operate from both the front and the back. Rememeber that a single-ended stack operates only from the back, while a single-ended queue pushes to the back and pops from the front.

Implementationsยง

Sourceยง

impl<T: Clone, const CAP: usize> Destaque<T, CAP, u8, Bare>

This impl block contains no public items.

ยงMethods for DestaqueU8



Sourceยง

impl<T: Clone, const CAP: usize> Destaque<T, CAP, u8, Bare>

Source

pub fn new(element: T) -> Result<Self, MismatchedCapacity> โ“˜

Returns an empty destaque, allocated in the stack, cloning element to fill the remaining free data.

ยงErrors

Returns MismatchedCapacity if CAP > u8::MAX or if CAP > isize::MAX / size_of::<T>().

ยงExamples
let q = DestaqueU8::<_, 16>::new(0).unwrap();
Sourceยง

impl<T: Copy, const CAP: usize> Destaque<T, CAP, u8, Bare>

Source

pub const fn new_copied(element: T) -> Result<Self, MismatchedCapacity> โ“˜

Returns an empty destaque, allocated in the stack, copying element to fill the remaining free data, in compile-time.

ยงErrors

Returns MismatchedCapacity if CAP > u8::MAX or if CAP > isize::MAX / size_of::<T>().

ยงExamples
const S: DestaqueU8<i32, 16> = unwrap![ok DestaqueU8::new_copied(0)];
Sourceยง

impl<T: Clone, const CAP: usize> Destaque<T, CAP, u8, Boxed>

Source

pub fn new(element: T) -> Self

Available on crate feature alloc only.

Returns an empty destaque, allocated in the heap, cloning element to fill the remaining free data.

ยงExamples
let q = DestaqueU8::<_, 3, Boxed>::new(0);
Sourceยง

impl<T, const CAP: usize> Destaque<T, CAP, u8, Bare>

Source

pub const fn from_array_copy(arr: [T; CAP]) -> Destaque<T, CAP, u8, Bare>

Converts an array into a full destaque.

ยงExamples
let q = DestaqueU8::<_, 3>::from_array([1, 2, 3]);
Sourceยง

impl<T, const CAP: usize, S: Storage> Destaque<T, CAP, u8, S>

Source

pub fn from_array(arr: [T; CAP]) -> Destaque<T, CAP, u8, S>

Converts an array into a full destaque.

ยงExamples
let q = DestaqueU8::<_, 3>::from_array([1, 2, 3]);
Source

pub const fn len(&self) -> u8

Returns the number of destaqued elements.

Source

pub const fn is_empty(&self) -> bool

Returns true if the destaque is empty.

ยงExamples
let q = DestaqueU8::<i32, 8>::default();
assert![q.is_empty()];
Source

pub const fn is_full(&self) -> bool

Returns true if the destaque is full.

ยงExamples
let q = DestaqueU8::<_, 3>::from([1, 2, 3]);
assert![q.is_full()];
Source

pub const fn capacity(&self) -> u8

Returns the destaqueโ€™s total capacity.

ยงExamples
let q = DestaqueU8::<i32, 3>::default();
assert_eq![3, q.capacity()];
Source

pub const fn remaining_capacity(&self) -> u8

Returns the destaqueโ€™s remaining capacity.

ยงExamples
let mut q = DestaqueU8::<i32, 3>::default();
assert_eq![3, q.remaining_capacity()];
q.push_back(1)?;
assert_eq![2, q.remaining_capacity()];
Source

pub fn as_slices(&self) -> (&[T], &[T]) โ“˜

Returns the destaque as pair of shared slices, which contain, in order, the contents of the destaque.

ยงExamples
let q = DestaqueU8::<_, 3>::from([1, 2, 3]);
assert_eq![q.as_slices(), (&[1, 2, 3][..], &[][..])];
Source

pub const fn is_contiguous(&self) -> bool

Returns true if the destaque is contiguous.

ยงExamples
let mut q = DestaqueU8::<_, 3>::from([1, 2, 3]);
assert_eq![q.as_slices(), (&[1, 2, 3][..], &[][..])];
assert![q.is_contiguous()];
q.pop_back()?;
q.push_front(4)?;
assert![!q.is_contiguous()];
assert_eq![q.as_slices(), (&[4][..], &[1, 2][..])];
Source

pub fn push_front(&mut self, element: T) -> Result<(), NotEnoughSpace> โ“˜

Pushes a new element to the front of the destaque.

( 1 2 -- 3 1 2 )

ยงErrors

Returns NotEnoughSpace if the destaque is full.

ยงExamples
let mut q = DestaqueU8::<u8, 3>::default();
q.push_front(1)?;
q.push_front(2)?;
q.push_front(3)?;
assert_eq![q.to_array(), Some([3, 2, 1])];
Source

pub fn push_front_unchecked(&mut self, element: T)

Unchecked version of push_front.

ยงPanics

Panics if the destaque is full.

Source

pub fn push_front_override(&mut self, element: T) -> bool

Pushes a new element to the front of the destaque, overriding an element from the back if the destaque is full.

Returns true if an element was overridden, and false otherwise.

ยงExamples
let mut q = DestaqueU8::<_, 3>::from([1, 2]);
assert_eq!(q.push_front_override(3), false);
assert_eq![q.to_array(), Some([3, 1, 2])];
assert_eq!(q.push_front_override(4), true);
assert_eq![q.to_array(), Some([4, 3, 1])];
Source

pub fn push_back(&mut self, element: T) -> Result<(), NotEnoughSpace> โ“˜

Pushes a new element to the back of the destaque.

This is the habitual enqueue operation for a single-ended queue.

( 1 2 -- 1 2 3 )

ยงErrors

Returns NotEnoughSpace if the destaque is full.

ยงExamples
let mut q = DestaqueU8::<u8, 3>::default();
q.push_back(1)?;
q.push_back(2)?;
q.push_back(3)?;
assert_eq![q.to_array(), Some([1, 2, 3])];
Source

pub fn enqueue(&mut self, element: T) -> Result<(), NotEnoughSpace> โ“˜

Alias of push_back.

This is the habitual enqueue operation for a single-ended queue.

Source

pub fn push_back_unchecked(&mut self, element: T)

Unchecked version of push_back.

ยงPanics

Panics if the destaque is full.

Source

pub fn push_back_override(&mut self, element: T) -> bool

Pushes a new element to the back of the destaque, overriding the first element if the destaque is full.

Returns true if an element was overridden, and false otherwise.

ยงExamples
let mut q = DestaqueU8::<_, 3>::from([1, 2]);
assert_eq!(q.push_back_override(3), false);
assert_eq![q.to_array(), Some([1, 2, 3])];
assert_eq!(q.push_back_override(4), true);
assert_eq![q.to_array(), Some([2, 3, 4])];
Source

pub fn pop_front(&mut self) -> Result<T, NotEnoughElements> โ“˜

Available on crate feature unsafe_ptr only.

Pops the front element.

This is the habitual dequeue operation for a signle-ended queue.

( 1 2 -- 2 )

ยงErrors

Returns NotEnoughElements if the queue is empty.

ยงExamples

let mut q = DestaqueU8::<_, 8>::from([1, 2, 3]);
assert_eq![1, q.pop_front()?];
assert_eq![2, q.pop_front()?];
assert_eq![3, q.pop_front()?];
assert![q.is_empty()];
ยงFeatures

Itโ€™s depends on T: Clone, unless the unsafe_ptr feature is enabled.

Source

pub fn dequeue(&mut self) -> Result<T, NotEnoughElements> โ“˜

Available on crate feature unsafe_ptr only.

Alias of pop_front.

This is the habitual dequeue operation for a single-ended queue.

Source

pub fn pop_back(&mut self) -> Result<T, NotEnoughElements> โ“˜

Available on crate feature unsafe_ptr only.

Pops the back element.

( 1 2-- 1 )

ยงErrors

Returns NotEnoughElements if the destaque is empty.

ยงExamples
let mut q = DestaqueU8::<_, 8>::from([1, 2, 3]);
assert_eq![3, q.pop_back()?];
assert_eq![2, q.pop_back()?];
assert_eq![1, q.pop_back()?];
assert![q.is_empty()];
ยงFeatures

Itโ€™s depends on T: Clone, unless the unsafe_ptr feature is enabled.

Source

pub fn peek_back(&self) -> Result<&T, NotEnoughElements> โ“˜

Returns a shared reference to the back element.

ยงErrors

Returns NotEnoughElements if the destaque is empty.

ยงExamples
let q = DestaqueU8::<_, 8>::from([1, 2, 3]);
assert_eq![&3, q.peek_back()?];
Source

pub fn peek_back_mut(&mut self) -> Result<&mut T, NotEnoughElements> โ“˜

Returns an exclusive reference to the back element.

ยงErrors

Returns NotEnoughElements if the destaque is empty.

ยงExamples
let mut q = DestaqueU8::<_, 8>::from([1, 2, 3]);
assert_eq![&mut 3, q.peek_back_mut()?];
Source

pub fn peek_nth_back(&self, nth: u8) -> Result<&T, NotEnoughElements> โ“˜

Returns a shared reference to the nth back element.

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t have at least nth elements.

ยงExamples
let q = DestaqueU8::<_, 8>::from([1, 2, 3]);
assert_eq![&1, q.peek_nth_back(2)?];
Source

pub fn peek_nth_back_mut( &mut self, nth: u8, ) -> Result<&mut T, NotEnoughElements> โ“˜

Returns an exclusive reference to the nth back element.

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t have at least nth elements.

ยงExamples
let mut q = DestaqueU8::<_, 8>::from([1, 2, 3]);
assert_eq![&mut 1, q.peek_nth_back_mut(2)?];
Source

pub fn peek_front(&self) -> Result<&T, NotEnoughElements> โ“˜

Returns a shared reference to the front element.

ยงErrors

Returns NotEnoughElements if the destaque is empty.

ยงExamples
let q = DestaqueU8::<_, 8>::from([1, 2, 3]);
assert_eq![&1, q.peek_front()?];
Source

pub fn peek_front_mut(&mut self) -> Result<&mut T, NotEnoughElements> โ“˜

Returns an exclusive reference to the front element.

ยงErrors

Returns NotEnoughElements if the destaque is empty.

ยงExamples
let mut q = DestaqueU8::<_, 8>::from([1, 2, 3]);
assert_eq![&mut 1, q.peek_front_mut()?];
Source

pub fn peek_nth_front(&self, nth: u8) -> Result<&T, NotEnoughElements> โ“˜

Returns a shared reference to the nth front element.

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t have at least nth elements.

ยงExamples
let q = DestaqueU8::<_, 8>::from([1, 2, 3, 4]);
assert_eq![&3, q.peek_nth_front(2)?];
Source

pub fn peek_nth_front_mut( &mut self, nth: u8, ) -> Result<&mut T, NotEnoughElements> โ“˜

Returns an exclusive reference to the nth front element.

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t have at least nth elements.

ยงExamples
let mut q = DestaqueU8::<_, 8>::from([1, 2, 3, 4]);
assert_eq![&mut 3, q.peek_nth_front_mut(2)?];
Source

pub const fn clear(&mut self)

Clears the destaque.

( 1 2 -- )

ยงExamples
let mut q = DestaqueU8::<_, 8>::from([1, 2, 3, 4]);
q.clear();
assert![q.is_empty()];
Source

pub fn drop_back(&mut self) -> Result<(), NotEnoughElements> โ“˜

Drops the back element.

( 1 2 -- 1 )

ยงErrors

Returns NotEnoughElements if the destaque is empty.

ยงExamples
let mut q = DestaqueU8::<_, 8>::from([1, 2]);
q.drop_back()?;
assert_eq![q.to_array(), Some([1])];
Source

pub fn drop_front(&mut self) -> Result<(), NotEnoughElements> โ“˜

Drops the front element.

( 1 2 -- 2 )

ยงErrors

Returns NotEnoughElements if the destaque is empty.

ยงExamples
let mut q = DestaqueU8::<_, 8>::from([1, 2]);
q.drop_front()?;
assert_eq![q.to_array(), Some([2])];
Source

pub fn drop_n_back(&mut self, nth: u8) -> Result<(), NotEnoughElements> โ“˜

Drops n elements from the back.

( 1 2 3 4 -- 1 ) for n = 3

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t contain at least nth elements.

ยงExamples
let mut q = DestaqueU8::<_, 8>::from([1, 2, 3, 4]);
q.drop_n_back(3)?;
assert_eq![q.to_array(), Some([1])];
Source

pub fn drop_n_front(&mut self, nth: u8) -> Result<(), NotEnoughElements> โ“˜

Drops n elements from the front.

( 1 2 3 4 -- 4 ) for n = 3

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t contain at least nth elements.

ยงExamples
let mut q = DestaqueU8::<_, 8>::from([1, 2, 3, 4]);
q.drop_n_front(3)?;
assert_eq![q.to_array(), Some([4])];
Source

pub fn swap_back(&mut self) -> Result<(), NotEnoughElements> โ“˜

Swaps the last two elements at the back of the destaque.

( 1 2 3 4 -- 1 2 4 3 )

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t contain at least 2 elements.

ยงExamples
let mut q = DestaqueU8::<_, 4>::from([1, 2, 3, 4]);
q.swap_back();
assert_eq![q.to_array(), Some([1, 2, 4, 3])];
Source

pub fn swap_back_unchecked(&mut self)

Unchecked version of swap_back.

ยงPanics

Panics if the destaque doesnโ€™t contain at least 2 elements.

Source

pub fn swap_front(&mut self) -> Result<(), NotEnoughElements> โ“˜

Swaps the first two elements at the front of the destaque.

( 1 2 3 4 -- 2 1 3 4 )

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t contain at least 2 elements.

ยงExamples
let mut q = DestaqueU8::<_, 4>::from([1, 2, 3, 4]);
q.swap_front();
assert_eq![q.to_array(), Some([2, 1, 3, 4])];
Source

pub fn swap_front_unchecked(&mut self)

Unchecked version of swap_front.

ยงPanics

Panics if the destaque doesnโ€™t contain at least 2 elements.

Source

pub fn swap2_back(&mut self) -> Result<(), NotEnoughElements> โ“˜

Swaps the last two pairs of elements at the back of the destaque.

( 1 2 3 4 5 6 7 8 -- 1 2 3 4 7 8 5 6 )

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t contain at least 2 elements.

ยงExamples
let mut q = DestaqueU8::<_, 16>::from([1, 2, 3, 4, 5, 6, 7, 8]);
q.swap2_back();
assert_eq![q.to_array(), Some([1, 2, 3, 4, 7, 8, 5, 6])];
Source

pub fn swap2_back_unchecked(&mut self)

Unchecked version of swap2_back.

ยงPanics

Panics if the destaque doesnโ€™t contain at least 2 elements.

Source

pub fn swap2_front(&mut self) -> Result<(), NotEnoughElements> โ“˜

Swaps the first two pairs of elements at the front of the destaque. ( 1 2 3 4 5 6 7 8 -- 3 4 1 2 5 6 7 8 )

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t contain at least 4 elements.

ยงExamples
let mut q = DestaqueU8::<_, 16>::from([1, 2, 3, 4, 5, 6, 7, 8]);
q.swap2_front();
assert_eq![q.to_array(), Some([3, 4, 1, 2, 5, 6, 7, 8])];
Source

pub fn swap2_front_unchecked(&mut self)

Unchecked version of swap2_back.

ยงPanics

Panics if the destaque doesnโ€™t contain at least 2 elements.

Source

pub fn swap_ends(&mut self) -> Result<(), NotEnoughElements> โ“˜

Swaps the front and back elements.

( 1 2 3 4 -- 4 2 3 1 )

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t contain at least 2 elements.

ยงExamples
let mut q = DestaqueU8::<_, 6>::from([1, 2, 3, 4, 5]);
q.swap_ends();
assert_eq![q.to_array(), Some([5, 2, 3, 4, 1])];
Source

pub fn swap2_ends(&mut self) -> Result<(), NotEnoughElements> โ“˜

Swaps the front and back pairs of elements.

( 1 2 3 4 5 6 7 8 -- 7 8 3 4 5 6 1 2 )

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t contain at least 4 elements.

ยงExamples
let mut q = DestaqueU8::<_, 16>::from([1, 2, 3, 4, 5, 6, 7, 8]);
q.swap2_ends();
assert_eq![q.to_array(), Some([7, 8, 3, 4, 5, 6, 1, 2])];
Source

pub fn rot_right(&mut self)

Rotates all the destaqued elements one place to the right.

( 1 2 3 4 -- 4 1 2 3 )

ยงExamples
let mut q = DestaqueU8::<i32, 8>::from([2, 3]);
q.push_front(1)?;
q.push_back(4)?;
assert_eq![q.to_array(), Some([1, 2, 3, 4])];
q.rot_right();
assert_eq![q.to_array(), Some([4, 1, 2, 3])];
Source

pub fn rot_right_n(&mut self, nth: u8)

Rotates all the destaqued elements n places to the right.

( 1 2 3 4 -- 2 3 4 1 ) for n = 3

ยงExamples
let mut q = DestaqueU8::<i32, 8>::from([2, 3]);
q.push_front(1)?;
q.push_back(4)?;
assert_eq![q.to_array(), Some([1, 2, 3, 4])];
q.rot_right_n(3);
assert_eq![q.to_array(), Some([2, 3, 4, 1])];
Source

pub fn rot_left(&mut self)

Rotates all the destaqued elements one place to the left.

( 1 2 3 4 -- 2 3 4 1 )

ยงExamples
let mut q = DestaqueU8::<i32, 8>::from([2, 3]);
q.push_front(1)?;
q.push_back(4)?;
assert_eq![q.to_array(), Some([1, 2, 3, 4])];
q.rot_left();
assert_eq![q.to_array(), Some([2, 3, 4, 1])];
Source

pub fn rot_left_n(&mut self, nth: u8)

Rotates all the destaqued elements n places to the left.

( 1 2 3 4 -- 4 1 2 3 ) for nth = 3

ยงExamples
let mut q = DestaqueU8::<i32, 8>::from([2, 3]);
q.push_front(1)?;
q.push_back(4)?;
assert_eq![q.to_array(), Some([1, 2, 3, 4])];
q.rot_left_n(3);
assert_eq![q.to_array(), Some([4, 1, 2, 3])];
Sourceยง

impl<T: Clone, const CAP: usize, S: Storage> Destaque<T, CAP, u8, S>

Source

pub fn make_contiguous(&mut self, element: T) -> &mut [T] โ“˜

Makes the elements of the destaque contiguous, rearranging the elements so that they are in a single, continuous block starting from the front.

This operation might rearrange the internal representation of the elements to ensure they are contiguous. It clones the default element provided during the destaqueโ€™s construction to fill any gaps if necessary.

Returns a mutable slice to the now contiguous elements.

ยงExamples

let mut q = DestaqueU8::<_, 5>::new(0).unwrap();
q.push_back(1);
q.push_back(2);
q.push_front(5);
assert_eq!(q.as_slices(), (&[5][..], &[1, 2][..]));

assert_eq!(q.make_contiguous(0), &[5, 1, 2]);
assert_eq!(q.as_slices(), (&[5, 1, 2][..], &[][..]));
Source

pub fn to_vec(&self) -> Vec<T> โ“˜

Available on crate feature alloc only.

Returns the destaqued elements as a vector.

ยงExamples
let mut q = DestaqueU8::<_, 5>::from([3, 4]);
q.push_front(2)?;
q.push_back(5)?;
q.push_front(1)?;
assert_eq![q.to_vec(), vec![1, 2, 3, 4, 5]];
Source

pub fn to_array<const LEN: usize>(&self) -> Option<[T; LEN]> โ“˜

Returns some LEN destaqued elements as an array, or None if the destaque is empty, or there are not at least LEN elements.

This is a non alloc alternative method to to_vec.

ยงPanics

Panics if the new LEN sized array canโ€™t be allocated.

ยงExamples
let mut q = DestaqueU8::<_, 5>::from([3, 4]);
q.push_front(2)?;
q.push_back(5)?;
q.push_front(1)?;
assert_eq![q.to_array::<5>(), Some([1, 2, 3, 4, 5])];
ยงFeatures

Makes use of the unsafe_array feature if enabled.

Source

pub fn dup_back(&mut self) -> Result<(), DataNotEnough> โ“˜

Duplicates the back element at the back

( 1 2 -- 1 2 2 )

ยงErrors

Returns NotEnoughElements if the destaque is empty or NotEnoughSpace if it is full.

ยงExamples
let mut q = DestaqueU8::<u8, 4>::from([1, 2, 3]);
q.dup_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 3])];
Source

pub fn dup_front(&mut self) -> Result<(), DataNotEnough> โ“˜

Duplicates the front element at the front.

( 1 2 -- 1 1 2 )

ยงErrors

Returns NotEnoughElements if the destaque is empty or NotEnoughSpace if it is full.

ยงExamples
let mut q = DestaqueU8::<u8, 4>::from([1, 2, 3]);
q.dup_front()?;
assert_eq![q.to_array(), Some([1, 1, 2, 3])];
Source

pub fn dup2_back(&mut self) -> Result<(), DataNotEnough> โ“˜

Duplicates the back pair of elements, at the back.

( 1 2 3 4 -- 1 2 3 4 3 4)

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t have at least 2 elements, or NotEnoughSpace if it doesnโ€™t have space for 2 additional elements.

ยงExamples
let mut q = DestaqueU8::<u8, 6>::from([1, 2, 3, 4]);
q.dup2_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 4, 3, 4])];
Source

pub fn dup2_front(&mut self) -> Result<(), DataNotEnough> โ“˜

Duplicates the front pair of elements, at the front.

( 1 2 3 4 -- 1 2 1 2 3 4)

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t have at least 2 elements, or NotEnoughSpace if it doesnโ€™t have space for 2 additional elements.

ยงExamples
let mut q = DestaqueU8::<u8, 6>::from([1, 2, 3, 4]);
q.dup2_front()?;
assert_eq![q.to_array(), Some([1, 2, 1, 2, 3, 4])];
Source

pub fn over_back(&mut self) -> Result<(), DataNotEnough> โ“˜

Duplicates the second back element, at the back.

( 1 2 3 4 -- 1 2 3 4 3 )

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t have at least 2 elements, or NotEnoughSpace if it is full.

ยงExamples
let mut q = DestaqueU8::<u8, 7>::from([1, 2, 3, 4]);
q.over_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 4, 3])];
Source

pub fn over_front(&mut self) -> Result<(), DataNotEnough> โ“˜

Duplicates the second front element, at the front.

( 1 2 3 4 -- 2 1 2 3 4 )

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t have at least 2 elements, or NotEnoughSpace if it is full.

ยงExamples
let mut q = DestaqueU8::<u8, 7>::from([1, 2, 3, 4]);
q.over_front()?;
assert_eq![q.to_array(), Some([2, 1, 2, 3, 4])];
Source

pub fn over2_back(&mut self) -> Result<(), DataNotEnough> โ“˜

Duplicates the second back pair of elements, at the back.

( 1 2 3 4 5 6 7 8 -- 1 2 3 4 5 6 7 8 5 6 )

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t have at least 4 elements, or NotEnoughSpace if it doesnโ€™t have space for 2 additional elements.

ยงExamples
let mut q = DestaqueU8::<u8, 8>::from([1, 2, 3, 4, 5, 6]);
q.over2_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 4, 5, 6, 3, 4])];
Source

pub fn over2_front(&mut self) -> Result<(), DataNotEnough> โ“˜

Duplicates the second front pair of elements, at the front.

( 1 2 3 4 5 6 7 8 -- 3 4 1 2 3 4 5 6 7 8 )

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t have at least 4 elements, or NotEnoughSpace if it doesnโ€™t have space for 2 additional elements.

ยงExamples
let mut q = DestaqueU8::<u8, 8>::from([1, 2, 3, 4, 5, 6]);
q.over2_front()?;
assert_eq![q.to_array(), Some([3, 4, 1, 2, 3, 4, 5, 6])];
Source

pub fn tuck_back(&mut self) -> Result<(), DataNotEnough> โ“˜

Duplicates the back element, before the second back element.

( 1 2 3 4 -- 1 2 4 3 4 )

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t have at least 2 elements, or NotEnoughSpace if it is full.

ยงExamples

let mut q = DestaqueU8::<u8, 7>::from([1, 2, 3, 4, 5]);
q.tuck_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 5, 4, 5])];
Source

pub fn tuck_front(&mut self) -> Result<(), DataNotEnough> โ“˜

Duplicates the front element, after the second front element.

( 1 2 3 4 -- 1 2 1 3 4 )

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t have at least 2 elements, or NotEnoughSpace if it is full.

ยงExamples
let mut q = DestaqueU8::<u8, 7>::from([1, 2, 3, 4, 5]);
q.tuck_front()?;
assert_eq![q.to_array(), Some([1, 2, 1, 3, 4, 5])];
Source

pub fn tuck2_back(&mut self) -> Result<(), DataNotEnough> โ“˜

Duplicates the back pair of elements, before the second back pair of elements.

( 1 2 3 4 5 6 7 8 -- 1 2 3 4 7 8 5 6 7 8 )

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t have at least 4 elements, or NotEnoughSpace if it doesnโ€™t have space for 2 additional elements.

ยงExamples
let mut q = DestaqueU8::<u8, 7>::from([1, 2, 3, 4, 5]);
q.tuck2_back()?;
assert_eq![q.to_array(), Some([1, 4, 5, 2, 3, 4, 5])];
Source

pub fn tuck2_front(&mut self) -> Result<(), DataNotEnough> โ“˜

Duplicates the front pair of elements, after the second front pair of elements.

( 1 2 3 4 5 6 7 8 -- 1 2 3 4 1 2 5 6 7 8 )

ยงErrors

Returns NotEnoughElements if the destaque doesnโ€™t have at least 4 elements, or NotEnoughSpace if it doesnโ€™t have space for 2 additional elements.

ยงExamples
let mut q = DestaqueU8::<u8, 7>::from([1, 2, 3, 4, 5]);
q.tuck2_front()?;
assert_eq![q.to_array(), Some([1, 2, 3, 4, 1, 2, 5])];
Sourceยง

impl<T, const CAP: usize, S: Storage> Destaque<T, CAP, u8, S>

Source

pub const fn iter(&self) -> DestaqueIter<'_, T, CAP, u8, S> โ“˜

Returns an iterator.

Source

pub fn extend_back<I>(&mut self, iterator: I) -> Result<(), NotEnoughSpace> โ“˜
where I: IntoIterator<Item = T>,

Extends the back of the destaque from an iterator.

( 1 2 -- 1 2 3 4 5 6) for [3 4 5 6]

ยงErrors

Returns NotEnoughSpace if the destaque becomes full before the iterator finishes.

ยงExamples
let mut q = DestaqueU8::<_, 6>::from([1, 2, 3]);
q.extend_back([4, 5, 6, 7, 8]);
assert_eq![q.to_array(), Some([1, 2, 3, 4, 5, 6])];
Source

pub fn extend_back_override<I>(&mut self, iterator: I) -> bool
where I: IntoIterator<Item = T>,

Extends the back of the destaque from an iterator, overriding elements from the front if the destaque is full.

( 1 2 3 -- 3 4 5 6) for [4 5 6] and CAP = 4

ยงExamples
let mut q = DestaqueU8::<_, 4>::from([1, 2, 3]);
assert_eq![q.extend_back_override([4, 5, 6]), true];
assert_eq![q.to_array(), Some([3, 4, 5, 6])];
Source

pub fn extend_front<I>(&mut self, iterator: I) -> Result<(), NotEnoughSpace> โ“˜
where I: IntoIterator<Item = T>,

Extends the front of the destaque from an iterator.

( 1 2 -- 6 5 4 3 1 2 ) for [3 4 5 6]

ยงErrors

Returns NotEnoughSpace if the destaque becomes full before the iterator finishes.

ยงExamples
let mut q = DestaqueU8::<_, 6>::from([1, 2, 3]);
q.extend_front([4, 5, 6, 7, 8]);
assert_eq![q.to_array(), Some([6, 5, 4, 1, 2, 3])];
Source

pub fn extend_front_override<I>(&mut self, iterator: I) -> bool
where I: IntoIterator<Item = T>,

Extends the front of the destaque from an iterator, overriding elements from the back if the destaque is full.

( 1 2 3 -- 6 5 4 1) for [4 5 6] and CAP = 4

ยงExamples
let mut q = DestaqueU8::<_, 4>::from([1, 2, 3]);
assert_eq![q.extend_front_override([4, 5, 6]), true];
assert_eq![q.to_array(), Some([6, 5, 4, 1])];
Sourceยง

impl<T: PartialEq, const CAP: usize, S: Storage> Destaque<T, CAP, u8, S>

Source

pub fn contains(&self, element: &T) -> bool

Returns true if the destaque contains element.

ยงExamples
let q = DestaqueU8::<_, 6>::from([5, 78, 42, 33, 9]);

assert![q.contains(&9)];
assert![!q.contains(&8)];

Trait Implementationsยง

Sourceยง

impl<T: Clone, const CAP: usize, IDX: Clone, S: Storage> Clone for Destaque<T, CAP, IDX, S>
where S::Stored<[T; CAP]>: Clone,

Sourceยง

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) ยท Sourceยง

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Sourceยง

impl<T: ConstInit, const CAP: usize, IDX: ConstInit> ConstInit for Destaque<T, CAP, IDX, Bare>

Sourceยง

const INIT: Self

Returns an empty stack, allocated in the stack, using the default value to fill the remaining free data.

Sourceยง

impl<T: Copy, const CAP: usize, IDX: Copy, S: Storage> Copy for Destaque<T, CAP, IDX, S>
where S::Stored<[T; CAP]>: Copy,

Sourceยง

impl<T, const LEN: usize, S: Storage> DataCollection for Destaque<T, LEN, u8, S>

Sourceยง

type Element = T

The element type of the collection.
Sourceยง

fn collection_capacity(&self) -> Result<usize, NotAvailable> โ“˜

Returns the reserved capacity for elements in the collection.
Sourceยง

fn collection_len(&self) -> Result<usize, NotAvailable> โ“˜

Returns the current number of elements in the collection.
Sourceยง

fn collection_is_empty(&self) -> Result<bool, NotAvailable> โ“˜

Returns true if the collection is empty, false if itโ€™s not.
Sourceยง

fn collection_is_full(&self) -> Result<bool, NotAvailable> โ“˜

Returns true if the collection is full, false if itโ€™s not.
Sourceยง

fn collection_contains( &self, element: Self::Element, ) -> Result<bool, NotAvailable> โ“˜
where T: PartialEq,

Returns true if the collection contains the given element.
Sourceยง

fn collection_count( &self, element: &Self::Element, ) -> Result<usize, NotAvailable> โ“˜
where T: PartialEq,

Counts the number of times a given element appears in the collection.
Sourceยง

impl<T, const CAP: usize, S: Storage> DataDeque for Destaque<T, CAP, u8, S>

Available on crate feature unsafe_ptr only.
Sourceยง

fn queue_pop_back( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> โ“˜

Remove an element from the back of the queue. Read more
Sourceยง

fn queue_push_front( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> โ“˜

Add an element to the front of the queue. Read more
Sourceยง

fn queue_pop_front( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> โ“˜

Remove an element from the front of the queue (calls queue_pop). Read more
Sourceยง

fn queue_push_back( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> โ“˜

Remove an element from the back of the queue (calls queue_push). Read more
Sourceยง

impl<T, const CAP: usize, S: Storage> DataDesta for Destaque<T, CAP, u8, S>

Available on crate feature unsafe_ptr only.
Sourceยง

fn stack_pop_front( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> โ“˜

Remove an element from the front of the stack.
Sourceยง

fn stack_push_front( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> โ“˜

Add an element to the front of the stack.
Sourceยง

fn stack_pop_back( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> โ“˜

Remove an element from the back of the stack (calls DataStack::stack_pop).
Sourceยง

fn stack_push_back( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> โ“˜

Remove an element from the back of the stack (calls DataStack::stack_push).
Sourceยง

impl<T, const CAP: usize, S: Storage> DataQueue for Destaque<T, CAP, u8, S>

Available on crate feature unsafe_ptr only.
Sourceยง

fn queue_pop( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> โ“˜

Remove an element from the (front of the) queue. Read more
Sourceยง

fn queue_push( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> โ“˜

Add an element to the (back of the) queue. Read more
Sourceยง

impl<T, const CAP: usize, S: Storage> DataStack for Destaque<T, CAP, u8, S>

Available on crate feature unsafe_ptr only.
Sourceยง

fn stack_pop( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> โ“˜

Remove an element from the (back of the) stack.
Sourceยง

fn stack_push( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> โ“˜

Add an element to the (back of the) stack.
Sourceยง

impl<T: Debug, const CAP: usize, IDX: Debug, S: Storage> Debug for Destaque<T, CAP, IDX, S>
where S::Stored<[T; CAP]>: Debug,

Sourceยง

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Sourceยง

impl<T: Default, const CAP: usize, IDX: Default> Default for Destaque<T, CAP, IDX, Bare>

Sourceยง

fn default() -> Self

Returns an empty queue, allocated in the stack, using the default value to fill the remaining free data.

Sourceยง

impl<T: Default, const CAP: usize, IDX: Default> Default for Destaque<T, CAP, IDX, Boxed>

Available on crate feature alloc only.
Sourceยง

fn default() -> Self

Returns an empty queue, allocated in the heap, using the default value to fill the remaining free data.

ยงExamples
let mut q = DestaqueU8::<i32, 100, Boxed>::default();
Sourceยง

impl<T: Eq, const CAP: usize, IDX: Eq, S: Storage> Eq for Destaque<T, CAP, IDX, S>
where S::Stored<[T; CAP]>: Eq,

Sourceยง

impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, u8, Bare>
where I: IntoIterator<Item = T>,

Sourceยง

fn from(iterator: I) -> Destaque<T, CAP, u8, Bare>

Returns a queue filled with an iterator, in the stack.

ยงExamples
let q: DestaqueU8<_, 3> = [1, 2, 3].into();
Sourceยง

impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, u8, Boxed>
where I: IntoIterator<Item = T>,

Available on crate feature alloc only.
Sourceยง

fn from(iterator: I) -> Destaque<T, CAP, u8, Boxed>

Returns a queue filled with an iterator, in the heap.

ยงExamples
let q: DestaqueU8<_, 3, Boxed> = [1, 2, 3].into();
Sourceยง

impl<T: Ord, const CAP: usize, S: Storage> Ord for Destaque<T, CAP, u8, S>
where S::Stored<[T; CAP]>: Ord,

Sourceยง

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) ยท Sourceยง

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) ยท Sourceยง

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) ยท Sourceยง

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Sourceยง

impl<T: PartialEq, const CAP: usize, IDX: PartialEq, S: Storage> PartialEq for Destaque<T, CAP, IDX, S>

Sourceยง

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) ยท Sourceยง

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Sourceยง

impl<T: PartialOrd, const CAP: usize, S: Storage> PartialOrd for Destaque<T, CAP, u8, S>

Sourceยง

fn partial_cmp(&self, other: &Self) -> Option<Ordering> โ“˜

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) ยท Sourceยง

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) ยท Sourceยง

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) ยท Sourceยง

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) ยท Sourceยง

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more

Auto Trait Implementationsยง

ยง

impl<T, const CAP: usize, IDX, S> Freeze for Destaque<T, CAP, IDX, S>
where IDX: Freeze, <S as Storage>::Stored<[T; CAP]>: Freeze,

ยง

impl<T, const CAP: usize, IDX, S> RefUnwindSafe for Destaque<T, CAP, IDX, S>

ยง

impl<T, const CAP: usize, IDX, S> Send for Destaque<T, CAP, IDX, S>
where IDX: Send, <S as Storage>::Stored<[T; CAP]>: Send,

ยง

impl<T, const CAP: usize, IDX, S> Sync for Destaque<T, CAP, IDX, S>
where IDX: Sync, <S as Storage>::Stored<[T; CAP]>: Sync,

ยง

impl<T, const CAP: usize, IDX, S> Unpin for Destaque<T, CAP, IDX, S>
where IDX: Unpin, <S as Storage>::Stored<[T; CAP]>: Unpin,

ยง

impl<T, const CAP: usize, IDX, S> UnsafeUnpin for Destaque<T, CAP, IDX, S>

ยง

impl<T, const CAP: usize, IDX, S> UnwindSafe for Destaque<T, CAP, IDX, S>

Blanket Implementationsยง

Sourceยง

impl<T> Any for T
where T: 'static + ?Sized,

Sourceยง

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Sourceยง

impl<T> AnyExt for T
where T: Any + ?Sized,

Sourceยง

fn type_id() -> TypeId

Returns the TypeId of Self. Read more
Sourceยง

fn type_of(&self) -> TypeId

Returns the TypeId of self. Read more
Sourceยง

fn type_name(&self) -> &'static str โ“˜

Returns the type name of self. Read more
Sourceยง

fn type_is<T: 'static>(&self) -> bool

Returns true if Self is of type T. Read more
Sourceยง

fn type_hash(&self) -> u64

Returns a deterministic hash of the TypeId of Self.
Sourceยง

fn type_hash_with<H: Hasher>(&self, hasher: H) -> u64

Returns a deterministic hash of the TypeId of Self using a custom hasher.
Sourceยง

fn as_any_ref(&self) -> &dyn Any
where Self: Sized,

Upcasts &self as &dyn Any. Read more
Sourceยง

fn as_any_mut(&mut self) -> &mut dyn Any
where Self: Sized,

Upcasts &mut self as &mut dyn Any. Read more
Sourceยง

fn as_any_box(self: Box<Self>) -> Box<dyn Any>
where Self: Sized,

Available on crate feature alloc only.
Upcasts Box<self> as Box<dyn Any>. Read more
Sourceยง

fn downcast_ref<T: 'static>(&self) -> Option<&T> โ“˜

Available on crate feature unsafe_layout and non-crate feature safe_code only.
Returns some shared reference to the inner value if it is of type T. Read more
Sourceยง

fn downcast_mut<T: 'static>(&mut self) -> Option<&mut T> โ“˜

Available on crate feature unsafe_layout and non-crate feature safe_code only.
Returns some exclusive reference to the inner value if it is of type T. Read more
Sourceยง

impl<T> Borrow<T> for T
where T: ?Sized,

Sourceยง

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Sourceยง

impl<T> BorrowMut<T> for T
where T: ?Sized,

Sourceยง

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Sourceยง

impl<T> ByteSized for T

Sourceยง

const BYTE_ALIGN: usize = _

The alignment of this type in bytes.
Sourceยง

const BYTE_SIZE: usize = _

The size of this type in bytes.
Sourceยง

fn byte_align(&self) -> usize

Returns the alignment of this type in bytes.
Sourceยง

fn byte_size(&self) -> usize

Returns the size of this type in bytes. Read more
Sourceยง

fn ptr_size_ratio(&self) -> [usize; 2]

Returns the size ratio between Ptr::BYTES and BYTE_SIZE. Read more
Sourceยง

impl<T> CloneToUninit for T
where T: Clone,

Sourceยง

unsafe fn clone_to_uninit(&self, dest: *mut u8)

๐Ÿ”ฌThis is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
ยง

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

ยง

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Sourceยง

impl<T> From<T> for T

Sourceยง

fn from(t: T) -> T

Returns the argument unchanged.

Sourceยง

impl<T> Hook for T

Sourceยง

fn hook<F>(self, f: F) -> Self
where F: FnOnce(&mut Self),

Hooks a mutation step into the value and returns it. Read more
Sourceยง

fn tap<F>(self, f: F) -> Self
where F: FnOnce(&Self),

Taps into the value for observation and returns it unchanged. Read more
Sourceยง

impl<T, U> Into<U> for T
where U: From<T>,

Sourceยง

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Sourceยง

impl<T> MemExt for T
where T: ?Sized,

Sourceยง

const NEEDS_DROP: bool = _

Know whether dropping values of this type matters, in compile-time.
Sourceยง

fn mem_align_of<T>() -> usize

Returns the minimum alignment of the type in bytes. Read more
Sourceยง

fn mem_align_of_val(&self) -> usize

Returns the alignment of the pointed-to value in bytes. Read more
Sourceยง

fn mem_size_of<T>() -> usize

Returns the size of a type in bytes. Read more
Sourceยง

fn mem_size_of_val(&self) -> usize

Returns the size of the pointed-to value in bytes. Read more
Sourceยง

fn mem_copy(&self) -> Self
where Self: Copy,

Bitwise-copies a value. Read more
Sourceยง

fn mem_needs_drop(&self) -> bool

Returns true if dropping values of this type matters. Read more
Sourceยง

fn mem_drop(self)
where Self: Sized,

Drops self by running its destructor. Read more
Sourceยง

fn mem_forget(self)
where Self: Sized,

Forgets about self without running its destructor. Read more
Sourceยง

fn mem_replace(&mut self, other: Self) -> Self
where Self: Sized,

Replaces self with other, returning the previous value of self. Read more
Sourceยง

fn mem_take(&mut self) -> Self
where Self: Default,

Replaces self with its default value, returning the previous value of self. Read more
Sourceยง

fn mem_swap(&mut self, other: &mut Self)
where Self: Sized,

Swaps the value of self and other without deinitializing either one. Read more
Sourceยง

unsafe fn mem_zeroed<T>() -> T

Available on crate feature unsafe_layout only.
Returns the value of type T represented by the all-zero byte-pattern. Read more
Sourceยง

unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst

Available on crate feature unsafe_layout only.
Returns the value of type T represented by the all-zero byte-pattern. Read more
Sourceยง

fn mem_as_bytes(&self) -> &[u8] โ“˜
where Self: Sync + Unpin,

Available on crate feature unsafe_slice only.
View a Sync + Unpin self as &[u8]. Read more
Sourceยง

fn mem_as_bytes_mut(&mut self) -> &mut [u8] โ“˜
where Self: Sync + Unpin,

Available on crate feature unsafe_slice only.
View a Sync + Unpin self as &mut [u8]. Read more
Sourceยง

impl<T, R> Morph<R> for T
where T: ?Sized,

Sourceยง

fn morph<F>(self, f: F) -> R
where F: FnOnce(Self) -> R, Self: Sized,

Morphs the value into a new one and returns it. Read more
Sourceยง

fn morph_ref<F>(&self, f: F) -> R
where F: FnOnce(&Self) -> R,

Morphs the value by shared reference and returns the result. Read more
Sourceยง

fn morph_mut<F>(&mut self, f: F) -> R
where F: FnOnce(&mut Self) -> R,

Morphs the value by exclusive reference and returns the result. Read more
Sourceยง

impl<T> ToOwned for T
where T: Clone,

Sourceยง

type Owned = T

The resulting type after obtaining ownership.
Sourceยง

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Sourceยง

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Sourceยง

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Sourceยง

type Error = Infallible

The type returned in the event of a conversion error.
Sourceยง

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> โ“˜

Performs the conversion.
Sourceยง

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Sourceยง

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Sourceยง

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error> โ“˜

Performs the conversion.