pub struct Destaque<T, const CAP: usize, IDX, S: Storage = Bare> { /* private fields */ }
Expand description
A static double-ended queue and stack backed by an Array
.
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.
-
General methods:
new
,len
,is_empty
,is_full
,clear
,contains
,capacity
,remaining_capacity
.iter
,extend_back
,extend_front
,from_array
(copy
),to_array
,to_vec
.
-
Queue and stack methods:
- push:
push_back
(uc) =enqueue
,push_front
(uc). - pop:
pop_front
=dequeue
,pop_back
. - peek:
peek_back
(mut)peek_nth_back
(mut),peek_front
(mut),peek_nth_front
(mut). - drop:
drop_back
,drop_front
,drop_n_back
,drop_n_front
. - swap:
swap_back
(uc),swap_front
(uc),swap2_back
(uc),swap2_front
(uc),swap_ends
,swap2_ends
. - rot:
rot_right
,rot_right_n
,rot_left
,rot_left_n
. - dup:
dup_back
,dup_front
,dup2_back
,dup2_front
. - over:
over_back
,over_front
,over2_back
,over2_front
. - tuck:
tuck_back
,tuck_front
,tuck2_back
,tuck2_front
.
- push:
Implementations§
impl<T: Clone, const CAP: usize> Destaque<T, CAP, u8, Bare>
Source§impl<T: Clone, const CAP: usize> Destaque<T, CAP, u8, Bare>
impl<T: Clone, const CAP: usize> Destaque<T, CAP, u8, Bare>
Sourcepub fn new(element: T) -> Result<Self, MismatchedCapacity> ⓘ
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>
impl<T: Copy, const CAP: usize> Destaque<T, CAP, u8, Bare>
Sourcepub const fn new_copied(element: T) -> Result<Self, MismatchedCapacity> ⓘ
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, const CAP: usize, S: Storage> Destaque<T, CAP, u8, S>
impl<T, const CAP: usize, S: Storage> Destaque<T, CAP, u8, S>
Sourcepub fn from_array(arr: [T; CAP]) -> Destaque<T, CAP, u8, S>
pub fn from_array(arr: [T; CAP]) -> Destaque<T, CAP, u8, S>
Sourcepub const fn is_empty(&self) -> bool
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()];
Sourcepub const fn is_full(&self) -> bool
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()];
Sourcepub const fn capacity(&self) -> u8 ⓘ
pub const fn capacity(&self) -> u8 ⓘ
Returns the destaque’s total capacity.
§Examples
let q = DestaqueU8::<i32, 3>::default();
assert_eq![3, q.capacity()];
Sourcepub const fn remaining_capacity(&self) -> u8 ⓘ
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()];
Sourcepub fn as_slices(&self) -> (&[T], &[T]) ⓘ
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][..], &[][..])];
Sourcepub const fn is_contiguous(&self) -> bool
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][..])];
Sourcepub fn push_front(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
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])];
Sourcepub fn push_front_unchecked(&mut self, element: T)
pub fn push_front_unchecked(&mut self, element: T)
Sourcepub fn push_front_override(&mut self, element: T) -> bool
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])];
Sourcepub fn push_back(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
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])];
Sourcepub fn enqueue(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
pub fn enqueue(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
Alias of push_back
.
This is the habitual enqueue operation for a single-ended queue.
Sourcepub fn push_back_unchecked(&mut self, element: T)
pub fn push_back_unchecked(&mut self, element: T)
Sourcepub fn push_back_override(&mut self, element: T) -> bool
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])];
Sourcepub fn pop_front(&mut self) -> Result<T, NotEnoughElements> ⓘ
Available on crate feature unsafe_ptr
or Clone
only.
pub fn pop_front(&mut self) -> Result<T, NotEnoughElements> ⓘ
unsafe_ptr
or Clone
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.
Sourcepub fn dequeue(&mut self) -> Result<T, NotEnoughElements> ⓘ
Available on crate feature unsafe_ptr
or Clone
only.
pub fn dequeue(&mut self) -> Result<T, NotEnoughElements> ⓘ
unsafe_ptr
or Clone
only.Alias of pop_front
.
This is the habitual dequeue operation for a single-ended queue.
Sourcepub fn pop_back(&mut self) -> Result<T, NotEnoughElements> ⓘ
Available on crate feature unsafe_ptr
or Clone
only.
pub fn pop_back(&mut self) -> Result<T, NotEnoughElements> ⓘ
unsafe_ptr
or Clone
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.
Sourcepub fn peek_back(&self) -> Result<&T, NotEnoughElements> ⓘ
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()?];
Sourcepub fn peek_back_mut(&mut self) -> Result<&mut T, NotEnoughElements> ⓘ
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()?];
Sourcepub fn peek_nth_back(&self, nth: u8) -> Result<&T, NotEnoughElements> ⓘ
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)?];
Sourcepub fn peek_nth_back_mut(
&mut self,
nth: u8,
) -> Result<&mut T, NotEnoughElements> ⓘ
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)?];
Sourcepub fn peek_front(&self) -> Result<&T, NotEnoughElements> ⓘ
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()?];
Sourcepub fn peek_front_mut(&mut self) -> Result<&mut T, NotEnoughElements> ⓘ
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()?];
Sourcepub fn peek_nth_front(&self, nth: u8) -> Result<&T, NotEnoughElements> ⓘ
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)?];
Sourcepub fn peek_nth_front_mut(
&mut self,
nth: u8,
) -> Result<&mut T, NotEnoughElements> ⓘ
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)?];
Sourcepub const fn clear(&mut self)
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()];
Sourcepub fn drop_back(&mut self) -> Result<(), NotEnoughElements> ⓘ
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])];
Sourcepub fn drop_front(&mut self) -> Result<(), NotEnoughElements> ⓘ
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])];
Sourcepub fn drop_n_back(&mut self, nth: u8) -> Result<(), NotEnoughElements> ⓘ
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])];
Sourcepub fn drop_n_front(&mut self, nth: u8) -> Result<(), NotEnoughElements> ⓘ
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])];
Sourcepub fn swap_back(&mut self) -> Result<(), NotEnoughElements> ⓘ
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])];
Sourcepub fn swap_back_unchecked(&mut self)
pub fn swap_back_unchecked(&mut self)
Sourcepub fn swap_front(&mut self) -> Result<(), NotEnoughElements> ⓘ
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])];
Sourcepub fn swap_front_unchecked(&mut self)
pub fn swap_front_unchecked(&mut self)
Unchecked version of swap_front
.
§Panics
Panics if the destaque doesn’t contain at least 2 elements.
Sourcepub fn swap2_back(&mut self) -> Result<(), NotEnoughElements> ⓘ
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])];
Sourcepub fn swap2_back_unchecked(&mut self)
pub fn swap2_back_unchecked(&mut self)
Unchecked version of swap2_back
.
§Panics
Panics if the destaque doesn’t contain at least 2 elements.
Sourcepub fn swap2_front(&mut self) -> Result<(), NotEnoughElements> ⓘ
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])];
Sourcepub fn swap2_front_unchecked(&mut self)
pub fn swap2_front_unchecked(&mut self)
Unchecked version of swap2_back
.
§Panics
Panics if the destaque doesn’t contain at least 2 elements.
Sourcepub fn swap_ends(&mut self) -> Result<(), NotEnoughElements> ⓘ
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])];
Sourcepub fn swap2_ends(&mut self) -> Result<(), NotEnoughElements> ⓘ
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])];
Sourcepub fn rot_right(&mut self)
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])];
Sourcepub fn rot_right_n(&mut self, nth: u8)
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])];
Sourcepub fn rot_left(&mut self)
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])];
Sourcepub fn rot_left_n(&mut self, nth: u8)
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>
impl<T: Clone, const CAP: usize, S: Storage> Destaque<T, CAP, u8, S>
Sourcepub fn make_contiguous(&mut self, element: T) -> &mut [T] ⓘ
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][..], &[][..]));
Sourcepub fn to_vec(&self) -> Vec<T> ⓘ
Available on crate feature alloc
only.
pub fn to_vec(&self) -> Vec<T> ⓘ
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]];
Sourcepub fn to_array<const LEN: usize>(&self) -> Option<[T; LEN]> ⓘ
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.
Sourcepub fn dup_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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])];
Sourcepub fn dup_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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])];
Sourcepub fn dup2_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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])];
Sourcepub fn dup2_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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])];
Sourcepub fn over_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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])];
Sourcepub fn over_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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])];
Sourcepub fn over2_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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])];
Sourcepub fn over2_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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])];
Sourcepub fn tuck_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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])];
Sourcepub fn tuck_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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])];
Sourcepub fn tuck2_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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])];
Sourcepub fn tuck2_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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>
impl<T, const CAP: usize, S: Storage> Destaque<T, CAP, u8, S>
Sourcepub const fn iter(&self) -> DestaqueIter<'_, T, CAP, u8, S> ⓘ
pub const fn iter(&self) -> DestaqueIter<'_, T, CAP, u8, S> ⓘ
Returns an iterator.
Sourcepub fn extend_back<I>(&mut self, iterator: I) -> Result<(), NotEnoughSpace> ⓘwhere
I: IntoIterator<Item = T>,
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])];
Sourcepub fn extend_back_override<I>(&mut self, iterator: I) -> boolwhere
I: IntoIterator<Item = T>,
pub fn extend_back_override<I>(&mut self, iterator: I) -> boolwhere
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])];
Sourcepub fn extend_front<I>(&mut self, iterator: I) -> Result<(), NotEnoughSpace> ⓘwhere
I: IntoIterator<Item = T>,
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])];
Sourcepub fn extend_front_override<I>(&mut self, iterator: I) -> boolwhere
I: IntoIterator<Item = T>,
pub fn extend_front_override<I>(&mut self, iterator: I) -> boolwhere
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])];
impl<T: Clone, const CAP: usize> Destaque<T, CAP, u16, Bare>
Source§impl<T: Clone, const CAP: usize> Destaque<T, CAP, u16, Bare>
impl<T: Clone, const CAP: usize> Destaque<T, CAP, u16, Bare>
Sourcepub fn new(element: T) -> Result<Self, MismatchedCapacity> ⓘ
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 >
u16::MAX
or if CAP > isize::MAX / size_of::<T>()
.
§Examples
let q = DestaqueU16::<_, 16>::new(0).unwrap();
Source§impl<T: Copy, const CAP: usize> Destaque<T, CAP, u16, Bare>
impl<T: Copy, const CAP: usize> Destaque<T, CAP, u16, Bare>
Sourcepub const fn new_copied(element: T) -> Result<Self, MismatchedCapacity> ⓘ
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 >
u16::MAX
or if CAP > isize::MAX / size_of::<T>()
.
§Examples
const S: DestaqueU16<i32, 16> = unwrap![ok DestaqueU16::new_copied(0)];
Source§impl<T, const CAP: usize, S: Storage> Destaque<T, CAP, u16, S>
impl<T, const CAP: usize, S: Storage> Destaque<T, CAP, u16, S>
Sourcepub fn from_array(arr: [T; CAP]) -> Destaque<T, CAP, u16, S>
pub fn from_array(arr: [T; CAP]) -> Destaque<T, CAP, u16, S>
Sourcepub const fn is_empty(&self) -> bool
pub const fn is_empty(&self) -> bool
Returns true
if the destaque is empty.
§Examples
let q = DestaqueU16::<i32, 8>::default();
assert![q.is_empty()];
Sourcepub const fn is_full(&self) -> bool
pub const fn is_full(&self) -> bool
Returns true
if the destaque is full.
§Examples
let q = DestaqueU16::<_, 3>::from([1, 2, 3]);
assert![q.is_full()];
Sourcepub const fn capacity(&self) -> u16 ⓘ
pub const fn capacity(&self) -> u16 ⓘ
Returns the destaque’s total capacity.
§Examples
let q = DestaqueU16::<i32, 3>::default();
assert_eq![3, q.capacity()];
Sourcepub const fn remaining_capacity(&self) -> u16 ⓘ
pub const fn remaining_capacity(&self) -> u16 ⓘ
Returns the destaque’s remaining capacity.
§Examples
let mut q = DestaqueU16::<i32, 3>::default();
assert_eq![3, q.remaining_capacity()];
q.push_back(1)?;
assert_eq![2, q.remaining_capacity()];
Sourcepub fn as_slices(&self) -> (&[T], &[T]) ⓘ
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 = DestaqueU16::<_, 3>::from([1, 2, 3]);
assert_eq![q.as_slices(), (&[1, 2, 3][..], &[][..])];
Sourcepub const fn is_contiguous(&self) -> bool
pub const fn is_contiguous(&self) -> bool
Returns true
if the destaque is contiguous.
§Examples
let mut q = DestaqueU16::<_, 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][..])];
Sourcepub fn push_front(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
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 = DestaqueU16::<u8, 3>::default();
q.push_front(1)?;
q.push_front(2)?;
q.push_front(3)?;
assert_eq![q.to_array(), Some([3, 2, 1])];
Sourcepub fn push_front_unchecked(&mut self, element: T)
pub fn push_front_unchecked(&mut self, element: T)
Sourcepub fn push_front_override(&mut self, element: T) -> bool
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 = DestaqueU16::<_, 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])];
Sourcepub fn push_back(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
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 = DestaqueU16::<u8, 3>::default();
q.push_back(1)?;
q.push_back(2)?;
q.push_back(3)?;
assert_eq![q.to_array(), Some([1, 2, 3])];
Sourcepub fn enqueue(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
pub fn enqueue(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
Alias of push_back
.
This is the habitual enqueue operation for a single-ended queue.
Sourcepub fn push_back_unchecked(&mut self, element: T)
pub fn push_back_unchecked(&mut self, element: T)
Sourcepub fn push_back_override(&mut self, element: T) -> bool
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 = DestaqueU16::<_, 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])];
Sourcepub fn pop_front(&mut self) -> Result<T, NotEnoughElements> ⓘ
Available on crate feature unsafe_ptr
or Clone
only.
pub fn pop_front(&mut self) -> Result<T, NotEnoughElements> ⓘ
unsafe_ptr
or Clone
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 = DestaqueU16::<_, 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.
Sourcepub fn dequeue(&mut self) -> Result<T, NotEnoughElements> ⓘ
Available on crate feature unsafe_ptr
or Clone
only.
pub fn dequeue(&mut self) -> Result<T, NotEnoughElements> ⓘ
unsafe_ptr
or Clone
only.Alias of pop_front
.
This is the habitual dequeue operation for a single-ended queue.
Sourcepub fn pop_back(&mut self) -> Result<T, NotEnoughElements> ⓘ
Available on crate feature unsafe_ptr
or Clone
only.
pub fn pop_back(&mut self) -> Result<T, NotEnoughElements> ⓘ
unsafe_ptr
or Clone
only.Pops the back element.
( 1 2-- 1 )
§Errors
Returns NotEnoughElements
if the destaque is empty.
§Examples
let mut q = DestaqueU16::<_, 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.
Sourcepub fn peek_back(&self) -> Result<&T, NotEnoughElements> ⓘ
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 = DestaqueU16::<_, 8>::from([1, 2, 3]);
assert_eq![&3, q.peek_back()?];
Sourcepub fn peek_back_mut(&mut self) -> Result<&mut T, NotEnoughElements> ⓘ
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 = DestaqueU16::<_, 8>::from([1, 2, 3]);
assert_eq![&mut 3, q.peek_back_mut()?];
Sourcepub fn peek_nth_back(&self, nth: u16) -> Result<&T, NotEnoughElements> ⓘ
pub fn peek_nth_back(&self, nth: u16) -> 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 = DestaqueU16::<_, 8>::from([1, 2, 3]);
assert_eq![&1, q.peek_nth_back(2)?];
Sourcepub fn peek_nth_back_mut(
&mut self,
nth: u16,
) -> Result<&mut T, NotEnoughElements> ⓘ
pub fn peek_nth_back_mut( &mut self, nth: u16, ) -> 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 = DestaqueU16::<_, 8>::from([1, 2, 3]);
assert_eq![&mut 1, q.peek_nth_back_mut(2)?];
Sourcepub fn peek_front(&self) -> Result<&T, NotEnoughElements> ⓘ
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 = DestaqueU16::<_, 8>::from([1, 2, 3]);
assert_eq![&1, q.peek_front()?];
Sourcepub fn peek_front_mut(&mut self) -> Result<&mut T, NotEnoughElements> ⓘ
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 = DestaqueU16::<_, 8>::from([1, 2, 3]);
assert_eq![&mut 1, q.peek_front_mut()?];
Sourcepub fn peek_nth_front(&self, nth: u16) -> Result<&T, NotEnoughElements> ⓘ
pub fn peek_nth_front(&self, nth: u16) -> 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 = DestaqueU16::<_, 8>::from([1, 2, 3, 4]);
assert_eq![&3, q.peek_nth_front(2)?];
Sourcepub fn peek_nth_front_mut(
&mut self,
nth: u16,
) -> Result<&mut T, NotEnoughElements> ⓘ
pub fn peek_nth_front_mut( &mut self, nth: u16, ) -> 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 = DestaqueU16::<_, 8>::from([1, 2, 3, 4]);
assert_eq![&mut 3, q.peek_nth_front_mut(2)?];
Sourcepub const fn clear(&mut self)
pub const fn clear(&mut self)
Clears the destaque.
( 1 2 -- )
§Examples
let mut q = DestaqueU16::<_, 8>::from([1, 2, 3, 4]);
q.clear();
assert![q.is_empty()];
Sourcepub fn drop_back(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU16::<_, 8>::from([1, 2]);
q.drop_back()?;
assert_eq![q.to_array(), Some([1])];
Sourcepub fn drop_front(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU16::<_, 8>::from([1, 2]);
q.drop_front()?;
assert_eq![q.to_array(), Some([2])];
Sourcepub fn drop_n_back(&mut self, nth: u16) -> Result<(), NotEnoughElements> ⓘ
pub fn drop_n_back(&mut self, nth: u16) -> 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 = DestaqueU16::<_, 8>::from([1, 2, 3, 4]);
q.drop_n_back(3)?;
assert_eq![q.to_array(), Some([1])];
Sourcepub fn drop_n_front(&mut self, nth: u16) -> Result<(), NotEnoughElements> ⓘ
pub fn drop_n_front(&mut self, nth: u16) -> 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 = DestaqueU16::<_, 8>::from([1, 2, 3, 4]);
q.drop_n_front(3)?;
assert_eq![q.to_array(), Some([4])];
Sourcepub fn swap_back(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU16::<_, 4>::from([1, 2, 3, 4]);
q.swap_back();
assert_eq![q.to_array(), Some([1, 2, 4, 3])];
Sourcepub fn swap_back_unchecked(&mut self)
pub fn swap_back_unchecked(&mut self)
Sourcepub fn swap_front(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU16::<_, 4>::from([1, 2, 3, 4]);
q.swap_front();
assert_eq![q.to_array(), Some([2, 1, 3, 4])];
Sourcepub fn swap_front_unchecked(&mut self)
pub fn swap_front_unchecked(&mut self)
Unchecked version of swap_front
.
§Panics
Panics if the destaque doesn’t contain at least 2 elements.
Sourcepub fn swap2_back(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU16::<_, 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])];
Sourcepub fn swap2_back_unchecked(&mut self)
pub fn swap2_back_unchecked(&mut self)
Unchecked version of swap2_back
.
§Panics
Panics if the destaque doesn’t contain at least 2 elements.
Sourcepub fn swap2_front(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU16::<_, 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])];
Sourcepub fn swap2_front_unchecked(&mut self)
pub fn swap2_front_unchecked(&mut self)
Unchecked version of swap2_back
.
§Panics
Panics if the destaque doesn’t contain at least 2 elements.
Sourcepub fn swap_ends(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU16::<_, 6>::from([1, 2, 3, 4, 5]);
q.swap_ends();
assert_eq![q.to_array(), Some([5, 2, 3, 4, 1])];
Sourcepub fn swap2_ends(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU16::<_, 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])];
Sourcepub fn rot_right(&mut self)
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 = DestaqueU16::<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])];
Sourcepub fn rot_right_n(&mut self, nth: u16)
pub fn rot_right_n(&mut self, nth: u16)
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 = DestaqueU16::<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])];
Sourcepub fn rot_left(&mut self)
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 = DestaqueU16::<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])];
Sourcepub fn rot_left_n(&mut self, nth: u16)
pub fn rot_left_n(&mut self, nth: u16)
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 = DestaqueU16::<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, u16, S>
impl<T: Clone, const CAP: usize, S: Storage> Destaque<T, CAP, u16, S>
Sourcepub fn make_contiguous(&mut self, element: T) -> &mut [T] ⓘ
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 = DestaqueU16::<_, 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][..], &[][..]));
Sourcepub fn to_vec(&self) -> Vec<T> ⓘ
Available on crate feature alloc
only.
pub fn to_vec(&self) -> Vec<T> ⓘ
alloc
only.Returns the destaqued elements as a vector.
§Examples
let mut q = DestaqueU16::<_, 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]];
Sourcepub fn to_array<const LEN: usize>(&self) -> Option<[T; LEN]> ⓘ
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 = DestaqueU16::<_, 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.
Sourcepub fn dup_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU16::<u8, 4>::from([1, 2, 3]);
q.dup_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 3])];
Sourcepub fn dup_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU16::<u8, 4>::from([1, 2, 3]);
q.dup_front()?;
assert_eq![q.to_array(), Some([1, 1, 2, 3])];
Sourcepub fn dup2_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU16::<u8, 6>::from([1, 2, 3, 4]);
q.dup2_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 4, 3, 4])];
Sourcepub fn dup2_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU16::<u8, 6>::from([1, 2, 3, 4]);
q.dup2_front()?;
assert_eq![q.to_array(), Some([1, 2, 1, 2, 3, 4])];
Sourcepub fn over_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU16::<u8, 7>::from([1, 2, 3, 4]);
q.over_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 4, 3])];
Sourcepub fn over_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU16::<u8, 7>::from([1, 2, 3, 4]);
q.over_front()?;
assert_eq![q.to_array(), Some([2, 1, 2, 3, 4])];
Sourcepub fn over2_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU16::<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])];
Sourcepub fn over2_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU16::<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])];
Sourcepub fn tuck_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU16::<u8, 7>::from([1, 2, 3, 4, 5]);
q.tuck_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 5, 4, 5])];
Sourcepub fn tuck_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU16::<u8, 7>::from([1, 2, 3, 4, 5]);
q.tuck_front()?;
assert_eq![q.to_array(), Some([1, 2, 1, 3, 4, 5])];
Sourcepub fn tuck2_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU16::<u8, 7>::from([1, 2, 3, 4, 5]);
q.tuck2_back()?;
assert_eq![q.to_array(), Some([1, 4, 5, 2, 3, 4, 5])];
Sourcepub fn tuck2_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU16::<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, u16, S>
impl<T, const CAP: usize, S: Storage> Destaque<T, CAP, u16, S>
Sourcepub const fn iter(&self) -> DestaqueIter<'_, T, CAP, u16, S> ⓘ
pub const fn iter(&self) -> DestaqueIter<'_, T, CAP, u16, S> ⓘ
Returns an iterator.
Sourcepub fn extend_back<I>(&mut self, iterator: I) -> Result<(), NotEnoughSpace> ⓘwhere
I: IntoIterator<Item = T>,
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 = DestaqueU16::<_, 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])];
Sourcepub fn extend_back_override<I>(&mut self, iterator: I) -> boolwhere
I: IntoIterator<Item = T>,
pub fn extend_back_override<I>(&mut self, iterator: I) -> boolwhere
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 = DestaqueU16::<_, 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])];
Sourcepub fn extend_front<I>(&mut self, iterator: I) -> Result<(), NotEnoughSpace> ⓘwhere
I: IntoIterator<Item = T>,
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 = DestaqueU16::<_, 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])];
Sourcepub fn extend_front_override<I>(&mut self, iterator: I) -> boolwhere
I: IntoIterator<Item = T>,
pub fn extend_front_override<I>(&mut self, iterator: I) -> boolwhere
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 = DestaqueU16::<_, 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])];
impl<T: Clone, const CAP: usize> Destaque<T, CAP, u32, Bare>
Source§impl<T: Clone, const CAP: usize> Destaque<T, CAP, u32, Bare>
impl<T: Clone, const CAP: usize> Destaque<T, CAP, u32, Bare>
Sourcepub fn new(element: T) -> Result<Self, MismatchedCapacity> ⓘ
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 >
u32::MAX
or if CAP > isize::MAX / size_of::<T>()
.
§Examples
let q = DestaqueU32::<_, 16>::new(0).unwrap();
Source§impl<T: Copy, const CAP: usize> Destaque<T, CAP, u32, Bare>
impl<T: Copy, const CAP: usize> Destaque<T, CAP, u32, Bare>
Sourcepub const fn new_copied(element: T) -> Result<Self, MismatchedCapacity> ⓘ
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 >
u32::MAX
or if CAP > isize::MAX / size_of::<T>()
.
§Examples
const S: DestaqueU32<i32, 16> = unwrap![ok DestaqueU32::new_copied(0)];
Source§impl<T, const CAP: usize, S: Storage> Destaque<T, CAP, u32, S>
impl<T, const CAP: usize, S: Storage> Destaque<T, CAP, u32, S>
Sourcepub fn from_array(arr: [T; CAP]) -> Destaque<T, CAP, u32, S>
pub fn from_array(arr: [T; CAP]) -> Destaque<T, CAP, u32, S>
Sourcepub const fn is_empty(&self) -> bool
pub const fn is_empty(&self) -> bool
Returns true
if the destaque is empty.
§Examples
let q = DestaqueU32::<i32, 8>::default();
assert![q.is_empty()];
Sourcepub const fn is_full(&self) -> bool
pub const fn is_full(&self) -> bool
Returns true
if the destaque is full.
§Examples
let q = DestaqueU32::<_, 3>::from([1, 2, 3]);
assert![q.is_full()];
Sourcepub const fn capacity(&self) -> u32 ⓘ
pub const fn capacity(&self) -> u32 ⓘ
Returns the destaque’s total capacity.
§Examples
let q = DestaqueU32::<i32, 3>::default();
assert_eq![3, q.capacity()];
Sourcepub const fn remaining_capacity(&self) -> u32 ⓘ
pub const fn remaining_capacity(&self) -> u32 ⓘ
Returns the destaque’s remaining capacity.
§Examples
let mut q = DestaqueU32::<i32, 3>::default();
assert_eq![3, q.remaining_capacity()];
q.push_back(1)?;
assert_eq![2, q.remaining_capacity()];
Sourcepub fn as_slices(&self) -> (&[T], &[T]) ⓘ
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 = DestaqueU32::<_, 3>::from([1, 2, 3]);
assert_eq![q.as_slices(), (&[1, 2, 3][..], &[][..])];
Sourcepub const fn is_contiguous(&self) -> bool
pub const fn is_contiguous(&self) -> bool
Returns true
if the destaque is contiguous.
§Examples
let mut q = DestaqueU32::<_, 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][..])];
Sourcepub fn push_front(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
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 = DestaqueU32::<u8, 3>::default();
q.push_front(1)?;
q.push_front(2)?;
q.push_front(3)?;
assert_eq![q.to_array(), Some([3, 2, 1])];
Sourcepub fn push_front_unchecked(&mut self, element: T)
pub fn push_front_unchecked(&mut self, element: T)
Sourcepub fn push_front_override(&mut self, element: T) -> bool
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 = DestaqueU32::<_, 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])];
Sourcepub fn push_back(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
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 = DestaqueU32::<u8, 3>::default();
q.push_back(1)?;
q.push_back(2)?;
q.push_back(3)?;
assert_eq![q.to_array(), Some([1, 2, 3])];
Sourcepub fn enqueue(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
pub fn enqueue(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
Alias of push_back
.
This is the habitual enqueue operation for a single-ended queue.
Sourcepub fn push_back_unchecked(&mut self, element: T)
pub fn push_back_unchecked(&mut self, element: T)
Sourcepub fn push_back_override(&mut self, element: T) -> bool
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 = DestaqueU32::<_, 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])];
Sourcepub fn pop_front(&mut self) -> Result<T, NotEnoughElements> ⓘ
Available on crate feature unsafe_ptr
or Clone
only.
pub fn pop_front(&mut self) -> Result<T, NotEnoughElements> ⓘ
unsafe_ptr
or Clone
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 = DestaqueU32::<_, 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.
Sourcepub fn dequeue(&mut self) -> Result<T, NotEnoughElements> ⓘ
Available on crate feature unsafe_ptr
or Clone
only.
pub fn dequeue(&mut self) -> Result<T, NotEnoughElements> ⓘ
unsafe_ptr
or Clone
only.Alias of pop_front
.
This is the habitual dequeue operation for a single-ended queue.
Sourcepub fn pop_back(&mut self) -> Result<T, NotEnoughElements> ⓘ
Available on crate feature unsafe_ptr
or Clone
only.
pub fn pop_back(&mut self) -> Result<T, NotEnoughElements> ⓘ
unsafe_ptr
or Clone
only.Pops the back element.
( 1 2-- 1 )
§Errors
Returns NotEnoughElements
if the destaque is empty.
§Examples
let mut q = DestaqueU32::<_, 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.
Sourcepub fn peek_back(&self) -> Result<&T, NotEnoughElements> ⓘ
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 = DestaqueU32::<_, 8>::from([1, 2, 3]);
assert_eq![&3, q.peek_back()?];
Sourcepub fn peek_back_mut(&mut self) -> Result<&mut T, NotEnoughElements> ⓘ
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 = DestaqueU32::<_, 8>::from([1, 2, 3]);
assert_eq![&mut 3, q.peek_back_mut()?];
Sourcepub fn peek_nth_back(&self, nth: u32) -> Result<&T, NotEnoughElements> ⓘ
pub fn peek_nth_back(&self, nth: u32) -> 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 = DestaqueU32::<_, 8>::from([1, 2, 3]);
assert_eq![&1, q.peek_nth_back(2)?];
Sourcepub fn peek_nth_back_mut(
&mut self,
nth: u32,
) -> Result<&mut T, NotEnoughElements> ⓘ
pub fn peek_nth_back_mut( &mut self, nth: u32, ) -> 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 = DestaqueU32::<_, 8>::from([1, 2, 3]);
assert_eq![&mut 1, q.peek_nth_back_mut(2)?];
Sourcepub fn peek_front(&self) -> Result<&T, NotEnoughElements> ⓘ
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 = DestaqueU32::<_, 8>::from([1, 2, 3]);
assert_eq![&1, q.peek_front()?];
Sourcepub fn peek_front_mut(&mut self) -> Result<&mut T, NotEnoughElements> ⓘ
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 = DestaqueU32::<_, 8>::from([1, 2, 3]);
assert_eq![&mut 1, q.peek_front_mut()?];
Sourcepub fn peek_nth_front(&self, nth: u32) -> Result<&T, NotEnoughElements> ⓘ
pub fn peek_nth_front(&self, nth: u32) -> 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 = DestaqueU32::<_, 8>::from([1, 2, 3, 4]);
assert_eq![&3, q.peek_nth_front(2)?];
Sourcepub fn peek_nth_front_mut(
&mut self,
nth: u32,
) -> Result<&mut T, NotEnoughElements> ⓘ
pub fn peek_nth_front_mut( &mut self, nth: u32, ) -> 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 = DestaqueU32::<_, 8>::from([1, 2, 3, 4]);
assert_eq![&mut 3, q.peek_nth_front_mut(2)?];
Sourcepub const fn clear(&mut self)
pub const fn clear(&mut self)
Clears the destaque.
( 1 2 -- )
§Examples
let mut q = DestaqueU32::<_, 8>::from([1, 2, 3, 4]);
q.clear();
assert![q.is_empty()];
Sourcepub fn drop_back(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU32::<_, 8>::from([1, 2]);
q.drop_back()?;
assert_eq![q.to_array(), Some([1])];
Sourcepub fn drop_front(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU32::<_, 8>::from([1, 2]);
q.drop_front()?;
assert_eq![q.to_array(), Some([2])];
Sourcepub fn drop_n_back(&mut self, nth: u32) -> Result<(), NotEnoughElements> ⓘ
pub fn drop_n_back(&mut self, nth: u32) -> 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 = DestaqueU32::<_, 8>::from([1, 2, 3, 4]);
q.drop_n_back(3)?;
assert_eq![q.to_array(), Some([1])];
Sourcepub fn drop_n_front(&mut self, nth: u32) -> Result<(), NotEnoughElements> ⓘ
pub fn drop_n_front(&mut self, nth: u32) -> 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 = DestaqueU32::<_, 8>::from([1, 2, 3, 4]);
q.drop_n_front(3)?;
assert_eq![q.to_array(), Some([4])];
Sourcepub fn swap_back(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU32::<_, 4>::from([1, 2, 3, 4]);
q.swap_back();
assert_eq![q.to_array(), Some([1, 2, 4, 3])];
Sourcepub fn swap_back_unchecked(&mut self)
pub fn swap_back_unchecked(&mut self)
Sourcepub fn swap_front(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU32::<_, 4>::from([1, 2, 3, 4]);
q.swap_front();
assert_eq![q.to_array(), Some([2, 1, 3, 4])];
Sourcepub fn swap_front_unchecked(&mut self)
pub fn swap_front_unchecked(&mut self)
Unchecked version of swap_front
.
§Panics
Panics if the destaque doesn’t contain at least 2 elements.
Sourcepub fn swap2_back(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU32::<_, 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])];
Sourcepub fn swap2_back_unchecked(&mut self)
pub fn swap2_back_unchecked(&mut self)
Unchecked version of swap2_back
.
§Panics
Panics if the destaque doesn’t contain at least 2 elements.
Sourcepub fn swap2_front(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU32::<_, 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])];
Sourcepub fn swap2_front_unchecked(&mut self)
pub fn swap2_front_unchecked(&mut self)
Unchecked version of swap2_back
.
§Panics
Panics if the destaque doesn’t contain at least 2 elements.
Sourcepub fn swap_ends(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU32::<_, 6>::from([1, 2, 3, 4, 5]);
q.swap_ends();
assert_eq![q.to_array(), Some([5, 2, 3, 4, 1])];
Sourcepub fn swap2_ends(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueU32::<_, 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])];
Sourcepub fn rot_right(&mut self)
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 = DestaqueU32::<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])];
Sourcepub fn rot_right_n(&mut self, nth: u32)
pub fn rot_right_n(&mut self, nth: u32)
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 = DestaqueU32::<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])];
Sourcepub fn rot_left(&mut self)
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 = DestaqueU32::<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])];
Sourcepub fn rot_left_n(&mut self, nth: u32)
pub fn rot_left_n(&mut self, nth: u32)
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 = DestaqueU32::<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, u32, S>
impl<T: Clone, const CAP: usize, S: Storage> Destaque<T, CAP, u32, S>
Sourcepub fn make_contiguous(&mut self, element: T) -> &mut [T] ⓘ
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 = DestaqueU32::<_, 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][..], &[][..]));
Sourcepub fn to_vec(&self) -> Vec<T> ⓘ
Available on crate feature alloc
only.
pub fn to_vec(&self) -> Vec<T> ⓘ
alloc
only.Returns the destaqued elements as a vector.
§Examples
let mut q = DestaqueU32::<_, 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]];
Sourcepub fn to_array<const LEN: usize>(&self) -> Option<[T; LEN]> ⓘ
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 = DestaqueU32::<_, 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.
Sourcepub fn dup_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU32::<u8, 4>::from([1, 2, 3]);
q.dup_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 3])];
Sourcepub fn dup_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU32::<u8, 4>::from([1, 2, 3]);
q.dup_front()?;
assert_eq![q.to_array(), Some([1, 1, 2, 3])];
Sourcepub fn dup2_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU32::<u8, 6>::from([1, 2, 3, 4]);
q.dup2_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 4, 3, 4])];
Sourcepub fn dup2_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU32::<u8, 6>::from([1, 2, 3, 4]);
q.dup2_front()?;
assert_eq![q.to_array(), Some([1, 2, 1, 2, 3, 4])];
Sourcepub fn over_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU32::<u8, 7>::from([1, 2, 3, 4]);
q.over_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 4, 3])];
Sourcepub fn over_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU32::<u8, 7>::from([1, 2, 3, 4]);
q.over_front()?;
assert_eq![q.to_array(), Some([2, 1, 2, 3, 4])];
Sourcepub fn over2_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU32::<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])];
Sourcepub fn over2_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU32::<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])];
Sourcepub fn tuck_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU32::<u8, 7>::from([1, 2, 3, 4, 5]);
q.tuck_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 5, 4, 5])];
Sourcepub fn tuck_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU32::<u8, 7>::from([1, 2, 3, 4, 5]);
q.tuck_front()?;
assert_eq![q.to_array(), Some([1, 2, 1, 3, 4, 5])];
Sourcepub fn tuck2_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU32::<u8, 7>::from([1, 2, 3, 4, 5]);
q.tuck2_back()?;
assert_eq![q.to_array(), Some([1, 4, 5, 2, 3, 4, 5])];
Sourcepub fn tuck2_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueU32::<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, u32, S>
impl<T, const CAP: usize, S: Storage> Destaque<T, CAP, u32, S>
Sourcepub const fn iter(&self) -> DestaqueIter<'_, T, CAP, u32, S> ⓘ
pub const fn iter(&self) -> DestaqueIter<'_, T, CAP, u32, S> ⓘ
Returns an iterator.
Sourcepub fn extend_back<I>(&mut self, iterator: I) -> Result<(), NotEnoughSpace> ⓘwhere
I: IntoIterator<Item = T>,
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 = DestaqueU32::<_, 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])];
Sourcepub fn extend_back_override<I>(&mut self, iterator: I) -> boolwhere
I: IntoIterator<Item = T>,
pub fn extend_back_override<I>(&mut self, iterator: I) -> boolwhere
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 = DestaqueU32::<_, 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])];
Sourcepub fn extend_front<I>(&mut self, iterator: I) -> Result<(), NotEnoughSpace> ⓘwhere
I: IntoIterator<Item = T>,
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 = DestaqueU32::<_, 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])];
Sourcepub fn extend_front_override<I>(&mut self, iterator: I) -> boolwhere
I: IntoIterator<Item = T>,
pub fn extend_front_override<I>(&mut self, iterator: I) -> boolwhere
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 = DestaqueU32::<_, 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])];
impl<T: Clone, const CAP: usize> Destaque<T, CAP, usize, Bare>
Source§impl<T: Clone, const CAP: usize> Destaque<T, CAP, usize, Bare>
impl<T: Clone, const CAP: usize> Destaque<T, CAP, usize, Bare>
Sourcepub fn new(element: T) -> Result<Self, MismatchedCapacity> ⓘ
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 >
usize::MAX
or if CAP > isize::MAX / size_of::<T>()
.
§Examples
let q = DestaqueUsize::<_, 16>::new(0).unwrap();
Source§impl<T: Copy, const CAP: usize> Destaque<T, CAP, usize, Bare>
impl<T: Copy, const CAP: usize> Destaque<T, CAP, usize, Bare>
Sourcepub const fn new_copied(element: T) -> Result<Self, MismatchedCapacity> ⓘ
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 >
usize::MAX
or if CAP > isize::MAX / size_of::<T>()
.
§Examples
const S: DestaqueUsize<i32, 16> = unwrap![ok DestaqueUsize::new_copied(0)];
Source§impl<T, const CAP: usize, S: Storage> Destaque<T, CAP, usize, S>
impl<T, const CAP: usize, S: Storage> Destaque<T, CAP, usize, S>
Sourcepub fn from_array(arr: [T; CAP]) -> Destaque<T, CAP, usize, S>
pub fn from_array(arr: [T; CAP]) -> Destaque<T, CAP, usize, S>
Sourcepub const fn is_empty(&self) -> bool
pub const fn is_empty(&self) -> bool
Returns true
if the destaque is empty.
§Examples
let q = DestaqueUsize::<i32, 8>::default();
assert![q.is_empty()];
Sourcepub const fn is_full(&self) -> bool
pub const fn is_full(&self) -> bool
Returns true
if the destaque is full.
§Examples
let q = DestaqueUsize::<_, 3>::from([1, 2, 3]);
assert![q.is_full()];
Sourcepub const fn capacity(&self) -> usize ⓘ
pub const fn capacity(&self) -> usize ⓘ
Returns the destaque’s total capacity.
§Examples
let q = DestaqueUsize::<i32, 3>::default();
assert_eq![3, q.capacity()];
Sourcepub const fn remaining_capacity(&self) -> usize ⓘ
pub const fn remaining_capacity(&self) -> usize ⓘ
Returns the destaque’s remaining capacity.
§Examples
let mut q = DestaqueUsize::<i32, 3>::default();
assert_eq![3, q.remaining_capacity()];
q.push_back(1)?;
assert_eq![2, q.remaining_capacity()];
Sourcepub fn as_slices(&self) -> (&[T], &[T]) ⓘ
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 = DestaqueUsize::<_, 3>::from([1, 2, 3]);
assert_eq![q.as_slices(), (&[1, 2, 3][..], &[][..])];
Sourcepub const fn is_contiguous(&self) -> bool
pub const fn is_contiguous(&self) -> bool
Returns true
if the destaque is contiguous.
§Examples
let mut q = DestaqueUsize::<_, 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][..])];
Sourcepub fn push_front(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
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 = DestaqueUsize::<u8, 3>::default();
q.push_front(1)?;
q.push_front(2)?;
q.push_front(3)?;
assert_eq![q.to_array(), Some([3, 2, 1])];
Sourcepub fn push_front_unchecked(&mut self, element: T)
pub fn push_front_unchecked(&mut self, element: T)
Sourcepub fn push_front_override(&mut self, element: T) -> bool
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 = DestaqueUsize::<_, 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])];
Sourcepub fn push_back(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
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 = DestaqueUsize::<u8, 3>::default();
q.push_back(1)?;
q.push_back(2)?;
q.push_back(3)?;
assert_eq![q.to_array(), Some([1, 2, 3])];
Sourcepub fn enqueue(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
pub fn enqueue(&mut self, element: T) -> Result<(), NotEnoughSpace> ⓘ
Alias of push_back
.
This is the habitual enqueue operation for a single-ended queue.
Sourcepub fn push_back_unchecked(&mut self, element: T)
pub fn push_back_unchecked(&mut self, element: T)
Sourcepub fn push_back_override(&mut self, element: T) -> bool
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 = DestaqueUsize::<_, 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])];
Sourcepub fn pop_front(&mut self) -> Result<T, NotEnoughElements> ⓘ
Available on crate feature unsafe_ptr
or Clone
only.
pub fn pop_front(&mut self) -> Result<T, NotEnoughElements> ⓘ
unsafe_ptr
or Clone
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 = DestaqueUsize::<_, 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.
Sourcepub fn dequeue(&mut self) -> Result<T, NotEnoughElements> ⓘ
Available on crate feature unsafe_ptr
or Clone
only.
pub fn dequeue(&mut self) -> Result<T, NotEnoughElements> ⓘ
unsafe_ptr
or Clone
only.Alias of pop_front
.
This is the habitual dequeue operation for a single-ended queue.
Sourcepub fn pop_back(&mut self) -> Result<T, NotEnoughElements> ⓘ
Available on crate feature unsafe_ptr
or Clone
only.
pub fn pop_back(&mut self) -> Result<T, NotEnoughElements> ⓘ
unsafe_ptr
or Clone
only.Pops the back element.
( 1 2-- 1 )
§Errors
Returns NotEnoughElements
if the destaque is empty.
§Examples
let mut q = DestaqueUsize::<_, 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.
Sourcepub fn peek_back(&self) -> Result<&T, NotEnoughElements> ⓘ
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 = DestaqueUsize::<_, 8>::from([1, 2, 3]);
assert_eq![&3, q.peek_back()?];
Sourcepub fn peek_back_mut(&mut self) -> Result<&mut T, NotEnoughElements> ⓘ
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 = DestaqueUsize::<_, 8>::from([1, 2, 3]);
assert_eq![&mut 3, q.peek_back_mut()?];
Sourcepub fn peek_nth_back(&self, nth: usize) -> Result<&T, NotEnoughElements> ⓘ
pub fn peek_nth_back(&self, nth: usize) -> 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 = DestaqueUsize::<_, 8>::from([1, 2, 3]);
assert_eq![&1, q.peek_nth_back(2)?];
Sourcepub fn peek_nth_back_mut(
&mut self,
nth: usize,
) -> Result<&mut T, NotEnoughElements> ⓘ
pub fn peek_nth_back_mut( &mut self, nth: usize, ) -> 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 = DestaqueUsize::<_, 8>::from([1, 2, 3]);
assert_eq![&mut 1, q.peek_nth_back_mut(2)?];
Sourcepub fn peek_front(&self) -> Result<&T, NotEnoughElements> ⓘ
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 = DestaqueUsize::<_, 8>::from([1, 2, 3]);
assert_eq![&1, q.peek_front()?];
Sourcepub fn peek_front_mut(&mut self) -> Result<&mut T, NotEnoughElements> ⓘ
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 = DestaqueUsize::<_, 8>::from([1, 2, 3]);
assert_eq![&mut 1, q.peek_front_mut()?];
Sourcepub fn peek_nth_front(&self, nth: usize) -> Result<&T, NotEnoughElements> ⓘ
pub fn peek_nth_front(&self, nth: usize) -> 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 = DestaqueUsize::<_, 8>::from([1, 2, 3, 4]);
assert_eq![&3, q.peek_nth_front(2)?];
Sourcepub fn peek_nth_front_mut(
&mut self,
nth: usize,
) -> Result<&mut T, NotEnoughElements> ⓘ
pub fn peek_nth_front_mut( &mut self, nth: usize, ) -> 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 = DestaqueUsize::<_, 8>::from([1, 2, 3, 4]);
assert_eq![&mut 3, q.peek_nth_front_mut(2)?];
Sourcepub const fn clear(&mut self)
pub const fn clear(&mut self)
Clears the destaque.
( 1 2 -- )
§Examples
let mut q = DestaqueUsize::<_, 8>::from([1, 2, 3, 4]);
q.clear();
assert![q.is_empty()];
Sourcepub fn drop_back(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueUsize::<_, 8>::from([1, 2]);
q.drop_back()?;
assert_eq![q.to_array(), Some([1])];
Sourcepub fn drop_front(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueUsize::<_, 8>::from([1, 2]);
q.drop_front()?;
assert_eq![q.to_array(), Some([2])];
Sourcepub fn drop_n_back(&mut self, nth: usize) -> Result<(), NotEnoughElements> ⓘ
pub fn drop_n_back(&mut self, nth: usize) -> 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 = DestaqueUsize::<_, 8>::from([1, 2, 3, 4]);
q.drop_n_back(3)?;
assert_eq![q.to_array(), Some([1])];
Sourcepub fn drop_n_front(&mut self, nth: usize) -> Result<(), NotEnoughElements> ⓘ
pub fn drop_n_front(&mut self, nth: usize) -> 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 = DestaqueUsize::<_, 8>::from([1, 2, 3, 4]);
q.drop_n_front(3)?;
assert_eq![q.to_array(), Some([4])];
Sourcepub fn swap_back(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueUsize::<_, 4>::from([1, 2, 3, 4]);
q.swap_back();
assert_eq![q.to_array(), Some([1, 2, 4, 3])];
Sourcepub fn swap_back_unchecked(&mut self)
pub fn swap_back_unchecked(&mut self)
Sourcepub fn swap_front(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueUsize::<_, 4>::from([1, 2, 3, 4]);
q.swap_front();
assert_eq![q.to_array(), Some([2, 1, 3, 4])];
Sourcepub fn swap_front_unchecked(&mut self)
pub fn swap_front_unchecked(&mut self)
Unchecked version of swap_front
.
§Panics
Panics if the destaque doesn’t contain at least 2 elements.
Sourcepub fn swap2_back(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueUsize::<_, 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])];
Sourcepub fn swap2_back_unchecked(&mut self)
pub fn swap2_back_unchecked(&mut self)
Unchecked version of swap2_back
.
§Panics
Panics if the destaque doesn’t contain at least 2 elements.
Sourcepub fn swap2_front(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueUsize::<_, 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])];
Sourcepub fn swap2_front_unchecked(&mut self)
pub fn swap2_front_unchecked(&mut self)
Unchecked version of swap2_back
.
§Panics
Panics if the destaque doesn’t contain at least 2 elements.
Sourcepub fn swap_ends(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueUsize::<_, 6>::from([1, 2, 3, 4, 5]);
q.swap_ends();
assert_eq![q.to_array(), Some([5, 2, 3, 4, 1])];
Sourcepub fn swap2_ends(&mut self) -> Result<(), NotEnoughElements> ⓘ
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 = DestaqueUsize::<_, 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])];
Sourcepub fn rot_right(&mut self)
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 = DestaqueUsize::<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])];
Sourcepub fn rot_right_n(&mut self, nth: usize)
pub fn rot_right_n(&mut self, nth: usize)
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 = DestaqueUsize::<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])];
Sourcepub fn rot_left(&mut self)
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 = DestaqueUsize::<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])];
Sourcepub fn rot_left_n(&mut self, nth: usize)
pub fn rot_left_n(&mut self, nth: usize)
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 = DestaqueUsize::<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, usize, S>
impl<T: Clone, const CAP: usize, S: Storage> Destaque<T, CAP, usize, S>
Sourcepub fn make_contiguous(&mut self, element: T) -> &mut [T] ⓘ
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 = DestaqueUsize::<_, 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][..], &[][..]));
Sourcepub fn to_vec(&self) -> Vec<T> ⓘ
Available on crate feature alloc
only.
pub fn to_vec(&self) -> Vec<T> ⓘ
alloc
only.Returns the destaqued elements as a vector.
§Examples
let mut q = DestaqueUsize::<_, 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]];
Sourcepub fn to_array<const LEN: usize>(&self) -> Option<[T; LEN]> ⓘ
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 = DestaqueUsize::<_, 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.
Sourcepub fn dup_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueUsize::<u8, 4>::from([1, 2, 3]);
q.dup_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 3])];
Sourcepub fn dup_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueUsize::<u8, 4>::from([1, 2, 3]);
q.dup_front()?;
assert_eq![q.to_array(), Some([1, 1, 2, 3])];
Sourcepub fn dup2_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueUsize::<u8, 6>::from([1, 2, 3, 4]);
q.dup2_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 4, 3, 4])];
Sourcepub fn dup2_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueUsize::<u8, 6>::from([1, 2, 3, 4]);
q.dup2_front()?;
assert_eq![q.to_array(), Some([1, 2, 1, 2, 3, 4])];
Sourcepub fn over_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueUsize::<u8, 7>::from([1, 2, 3, 4]);
q.over_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 4, 3])];
Sourcepub fn over_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueUsize::<u8, 7>::from([1, 2, 3, 4]);
q.over_front()?;
assert_eq![q.to_array(), Some([2, 1, 2, 3, 4])];
Sourcepub fn over2_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueUsize::<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])];
Sourcepub fn over2_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueUsize::<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])];
Sourcepub fn tuck_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueUsize::<u8, 7>::from([1, 2, 3, 4, 5]);
q.tuck_back()?;
assert_eq![q.to_array(), Some([1, 2, 3, 5, 4, 5])];
Sourcepub fn tuck_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueUsize::<u8, 7>::from([1, 2, 3, 4, 5]);
q.tuck_front()?;
assert_eq![q.to_array(), Some([1, 2, 1, 3, 4, 5])];
Sourcepub fn tuck2_back(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueUsize::<u8, 7>::from([1, 2, 3, 4, 5]);
q.tuck2_back()?;
assert_eq![q.to_array(), Some([1, 4, 5, 2, 3, 4, 5])];
Sourcepub fn tuck2_front(&mut self) -> Result<(), DataNotEnough> ⓘ
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 = DestaqueUsize::<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, usize, S>
impl<T, const CAP: usize, S: Storage> Destaque<T, CAP, usize, S>
Sourcepub const fn iter(&self) -> DestaqueIter<'_, T, CAP, usize, S> ⓘ
pub const fn iter(&self) -> DestaqueIter<'_, T, CAP, usize, S> ⓘ
Returns an iterator.
Sourcepub fn extend_back<I>(&mut self, iterator: I) -> Result<(), NotEnoughSpace> ⓘwhere
I: IntoIterator<Item = T>,
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 = DestaqueUsize::<_, 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])];
Sourcepub fn extend_back_override<I>(&mut self, iterator: I) -> boolwhere
I: IntoIterator<Item = T>,
pub fn extend_back_override<I>(&mut self, iterator: I) -> boolwhere
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 = DestaqueUsize::<_, 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])];
Sourcepub fn extend_front<I>(&mut self, iterator: I) -> Result<(), NotEnoughSpace> ⓘwhere
I: IntoIterator<Item = T>,
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 = DestaqueUsize::<_, 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])];
Sourcepub fn extend_front_override<I>(&mut self, iterator: I) -> boolwhere
I: IntoIterator<Item = T>,
pub fn extend_front_override<I>(&mut self, iterator: I) -> boolwhere
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 = DestaqueUsize::<_, 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])];
Trait Implementations§
Source§impl<T, const CAP: usize, IDX, S: Storage> Archive for Destaque<T, CAP, IDX, S>
impl<T, const CAP: usize, IDX, S: Storage> Archive for Destaque<T, CAP, IDX, S>
Source§type Archived = ArchivedDestaque<T, CAP, IDX, S>
type Archived = ArchivedDestaque<T, CAP, IDX, S>
Source§type Resolver = DestaqueResolver<T, CAP, IDX, S>
type Resolver = DestaqueResolver<T, CAP, IDX, S>
Source§fn resolve(&self, resolver: Self::Resolver, out: Place<Self::Archived>)
fn resolve(&self, resolver: Self::Resolver, out: Place<Self::Archived>)
§const COPY_OPTIMIZATION: CopyOptimization<Self> = _
const COPY_OPTIMIZATION: CopyOptimization<Self> = _
serialize
. Read moreSource§impl<T: ConstDefault, const CAP: usize, IDX: ConstDefault> ConstDefault for Destaque<T, CAP, IDX, Bare>
impl<T: ConstDefault, const CAP: usize, IDX: ConstDefault> ConstDefault for Destaque<T, CAP, IDX, Bare>
Source§impl<T, const LEN: usize, S: Storage> DataCollection for Destaque<T, LEN, u16, S>
impl<T, const LEN: usize, S: Storage> DataCollection for Destaque<T, LEN, u16, S>
Source§fn collection_capacity(&self) -> Result<usize, NotAvailable> ⓘ
fn collection_capacity(&self) -> Result<usize, NotAvailable> ⓘ
Source§fn collection_len(&self) -> Result<usize, NotAvailable> ⓘ
fn collection_len(&self) -> Result<usize, NotAvailable> ⓘ
Source§fn collection_is_empty(&self) -> Result<bool, NotAvailable> ⓘ
fn collection_is_empty(&self) -> Result<bool, NotAvailable> ⓘ
true
if the collection is empty, false
if it’s not.Source§fn collection_is_full(&self) -> Result<bool, NotAvailable> ⓘ
fn collection_is_full(&self) -> Result<bool, NotAvailable> ⓘ
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,
fn collection_contains(
&self,
element: Self::Element,
) -> Result<bool, NotAvailable> ⓘwhere
T: PartialEq,
true
if the collection contains the given element
.Source§fn collection_count(
&self,
element: &Self::Element,
) -> Result<usize, NotAvailable> ⓘwhere
T: PartialEq,
fn collection_count(
&self,
element: &Self::Element,
) -> Result<usize, NotAvailable> ⓘwhere
T: PartialEq,
element
appears in the collection.Source§impl<T, const LEN: usize, S: Storage> DataCollection for Destaque<T, LEN, u32, S>
impl<T, const LEN: usize, S: Storage> DataCollection for Destaque<T, LEN, u32, S>
Source§fn collection_capacity(&self) -> Result<usize, NotAvailable> ⓘ
fn collection_capacity(&self) -> Result<usize, NotAvailable> ⓘ
Source§fn collection_len(&self) -> Result<usize, NotAvailable> ⓘ
fn collection_len(&self) -> Result<usize, NotAvailable> ⓘ
Source§fn collection_is_empty(&self) -> Result<bool, NotAvailable> ⓘ
fn collection_is_empty(&self) -> Result<bool, NotAvailable> ⓘ
true
if the collection is empty, false
if it’s not.Source§fn collection_is_full(&self) -> Result<bool, NotAvailable> ⓘ
fn collection_is_full(&self) -> Result<bool, NotAvailable> ⓘ
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,
fn collection_contains(
&self,
element: Self::Element,
) -> Result<bool, NotAvailable> ⓘwhere
T: PartialEq,
true
if the collection contains the given element
.Source§fn collection_count(
&self,
element: &Self::Element,
) -> Result<usize, NotAvailable> ⓘwhere
T: PartialEq,
fn collection_count(
&self,
element: &Self::Element,
) -> Result<usize, NotAvailable> ⓘwhere
T: PartialEq,
element
appears in the collection.Source§impl<T, const LEN: usize, S: Storage> DataCollection for Destaque<T, LEN, u8, S>
impl<T, const LEN: usize, S: Storage> DataCollection for Destaque<T, LEN, u8, S>
Source§fn collection_capacity(&self) -> Result<usize, NotAvailable> ⓘ
fn collection_capacity(&self) -> Result<usize, NotAvailable> ⓘ
Source§fn collection_len(&self) -> Result<usize, NotAvailable> ⓘ
fn collection_len(&self) -> Result<usize, NotAvailable> ⓘ
Source§fn collection_is_empty(&self) -> Result<bool, NotAvailable> ⓘ
fn collection_is_empty(&self) -> Result<bool, NotAvailable> ⓘ
true
if the collection is empty, false
if it’s not.Source§fn collection_is_full(&self) -> Result<bool, NotAvailable> ⓘ
fn collection_is_full(&self) -> Result<bool, NotAvailable> ⓘ
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,
fn collection_contains(
&self,
element: Self::Element,
) -> Result<bool, NotAvailable> ⓘwhere
T: PartialEq,
true
if the collection contains the given element
.Source§fn collection_count(
&self,
element: &Self::Element,
) -> Result<usize, NotAvailable> ⓘwhere
T: PartialEq,
fn collection_count(
&self,
element: &Self::Element,
) -> Result<usize, NotAvailable> ⓘwhere
T: PartialEq,
element
appears in the collection.Source§impl<T, const LEN: usize, S: Storage> DataCollection for Destaque<T, LEN, usize, S>
impl<T, const LEN: usize, S: Storage> DataCollection for Destaque<T, LEN, usize, S>
Source§fn collection_capacity(&self) -> Result<usize, NotAvailable> ⓘ
fn collection_capacity(&self) -> Result<usize, NotAvailable> ⓘ
Source§fn collection_len(&self) -> Result<usize, NotAvailable> ⓘ
fn collection_len(&self) -> Result<usize, NotAvailable> ⓘ
Source§fn collection_is_empty(&self) -> Result<bool, NotAvailable> ⓘ
fn collection_is_empty(&self) -> Result<bool, NotAvailable> ⓘ
true
if the collection is empty, false
if it’s not.Source§fn collection_is_full(&self) -> Result<bool, NotAvailable> ⓘ
fn collection_is_full(&self) -> Result<bool, NotAvailable> ⓘ
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,
fn collection_contains(
&self,
element: Self::Element,
) -> Result<bool, NotAvailable> ⓘwhere
T: PartialEq,
true
if the collection contains the given element
.Source§fn collection_count(
&self,
element: &Self::Element,
) -> Result<usize, NotAvailable> ⓘwhere
T: PartialEq,
fn collection_count(
&self,
element: &Self::Element,
) -> Result<usize, NotAvailable> ⓘwhere
T: PartialEq,
element
appears in the collection.Source§impl<T, const CAP: usize, S: Storage> DataDeque for Destaque<T, CAP, u16, S>
impl<T, const CAP: usize, S: Storage> DataDeque for Destaque<T, CAP, u16, S>
Source§fn queue_pop_back(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn queue_pop_back( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn queue_push_front(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn queue_push_front( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§fn queue_pop_front(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn queue_pop_front( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn queue_push_back(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn queue_push_back( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
queue_push
). Read moreSource§impl<T, const CAP: usize, S: Storage> DataDeque for Destaque<T, CAP, u32, S>
impl<T, const CAP: usize, S: Storage> DataDeque for Destaque<T, CAP, u32, S>
Source§fn queue_pop_back(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn queue_pop_back( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn queue_push_front(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn queue_push_front( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§fn queue_pop_front(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn queue_pop_front( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn queue_push_back(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn queue_push_back( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
queue_push
). Read moreSource§impl<T, const CAP: usize, S: Storage> DataDeque for Destaque<T, CAP, u8, S>
impl<T, const CAP: usize, S: Storage> DataDeque for Destaque<T, CAP, u8, S>
Source§fn queue_pop_back(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn queue_pop_back( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn queue_push_front(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn queue_push_front( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§fn queue_pop_front(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn queue_pop_front( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn queue_push_back(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn queue_push_back( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
queue_push
). Read moreSource§impl<T, const CAP: usize, S: Storage> DataDeque for Destaque<T, CAP, usize, S>
impl<T, const CAP: usize, S: Storage> DataDeque for Destaque<T, CAP, usize, S>
Source§fn queue_pop_back(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn queue_pop_back( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn queue_push_front(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn queue_push_front( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§fn queue_pop_front(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn queue_pop_front( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn queue_push_back(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn queue_push_back( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
queue_push
). Read moreSource§impl<T, const CAP: usize, S: Storage> DataDesta for Destaque<T, CAP, u16, S>
impl<T, const CAP: usize, S: Storage> DataDesta for Destaque<T, CAP, u16, S>
Source§fn stack_pop_front(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn stack_pop_front( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn stack_push_front(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn stack_push_front( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§fn stack_pop_back(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn stack_pop_back( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
DataStack::stack_pop
).Source§fn stack_push_back(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn stack_push_back( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
DataStack::stack_push
).Source§impl<T, const CAP: usize, S: Storage> DataDesta for Destaque<T, CAP, u32, S>
impl<T, const CAP: usize, S: Storage> DataDesta for Destaque<T, CAP, u32, S>
Source§fn stack_pop_front(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn stack_pop_front( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn stack_push_front(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn stack_push_front( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§fn stack_pop_back(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn stack_pop_back( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
DataStack::stack_pop
).Source§fn stack_push_back(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn stack_push_back( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
DataStack::stack_push
).Source§impl<T, const CAP: usize, S: Storage> DataDesta for Destaque<T, CAP, u8, S>
impl<T, const CAP: usize, S: Storage> DataDesta for Destaque<T, CAP, u8, S>
Source§fn stack_pop_front(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn stack_pop_front( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn stack_push_front(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn stack_push_front( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§fn stack_pop_back(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn stack_pop_back( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
DataStack::stack_pop
).Source§fn stack_push_back(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn stack_push_back( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
DataStack::stack_push
).Source§impl<T, const CAP: usize, S: Storage> DataDesta for Destaque<T, CAP, usize, S>
impl<T, const CAP: usize, S: Storage> DataDesta for Destaque<T, CAP, usize, S>
Source§fn stack_pop_front(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn stack_pop_front( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn stack_push_front(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn stack_push_front( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§fn stack_pop_back(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn stack_pop_back( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
DataStack::stack_pop
).Source§fn stack_push_back(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn stack_push_back( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
DataStack::stack_push
).Source§impl<T, const CAP: usize, S: Storage> DataQueue for Destaque<T, CAP, u16, S>
impl<T, const CAP: usize, S: Storage> DataQueue for Destaque<T, CAP, u16, S>
Source§fn queue_pop(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn queue_pop( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn queue_push(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn queue_push( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§impl<T, const CAP: usize, S: Storage> DataQueue for Destaque<T, CAP, u32, S>
impl<T, const CAP: usize, S: Storage> DataQueue for Destaque<T, CAP, u32, S>
Source§fn queue_pop(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn queue_pop( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn queue_push(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn queue_push( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§impl<T, const CAP: usize, S: Storage> DataQueue for Destaque<T, CAP, u8, S>
impl<T, const CAP: usize, S: Storage> DataQueue for Destaque<T, CAP, u8, S>
Source§fn queue_pop(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn queue_pop( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn queue_push(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn queue_push( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§impl<T, const CAP: usize, S: Storage> DataQueue for Destaque<T, CAP, usize, S>
impl<T, const CAP: usize, S: Storage> DataQueue for Destaque<T, CAP, usize, S>
Source§fn queue_pop(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn queue_pop( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn queue_push(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn queue_push( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§impl<T, const CAP: usize, S: Storage> DataStack for Destaque<T, CAP, u16, S>
impl<T, const CAP: usize, S: Storage> DataStack for Destaque<T, CAP, u16, S>
Source§fn stack_pop(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn stack_pop( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn stack_push(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn stack_push( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§impl<T, const CAP: usize, S: Storage> DataStack for Destaque<T, CAP, u32, S>
impl<T, const CAP: usize, S: Storage> DataStack for Destaque<T, CAP, u32, S>
Source§fn stack_pop(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn stack_pop( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn stack_push(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn stack_push( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§impl<T, const CAP: usize, S: Storage> DataStack for Destaque<T, CAP, u8, S>
impl<T, const CAP: usize, S: Storage> DataStack for Destaque<T, CAP, u8, S>
Source§fn stack_pop(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn stack_pop( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn stack_push(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn stack_push( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§impl<T, const CAP: usize, S: Storage> DataStack for Destaque<T, CAP, usize, S>
impl<T, const CAP: usize, S: Storage> DataStack for Destaque<T, CAP, usize, S>
Source§fn stack_pop(
&mut self,
) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
fn stack_pop( &mut self, ) -> Result<<Self as DataCollection>::Element, NotEnoughElements> ⓘ
Source§fn stack_push(
&mut self,
element: <Self as DataCollection>::Element,
) -> Result<(), NotEnoughSpace> ⓘ
fn stack_push( &mut self, element: <Self as DataCollection>::Element, ) -> Result<(), NotEnoughSpace> ⓘ
Source§impl<__D: Fallible + ?Sized, T, const CAP: usize, IDX, S: Storage> Deserialize<Destaque<T, CAP, IDX, S>, __D> for Archived<Destaque<T, CAP, IDX, S>>
impl<__D: Fallible + ?Sized, T, const CAP: usize, IDX, S: Storage> Deserialize<Destaque<T, CAP, IDX, S>, __D> for Archived<Destaque<T, CAP, IDX, S>>
Source§impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, u16, Bare>where
I: IntoIterator<Item = T>,
impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, u16, Bare>where
I: IntoIterator<Item = T>,
Source§impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, u16, Boxed>where
I: IntoIterator<Item = T>,
impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, u16, Boxed>where
I: IntoIterator<Item = T>,
Source§impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, u32, Bare>where
I: IntoIterator<Item = T>,
impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, u32, Bare>where
I: IntoIterator<Item = T>,
Source§impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, u32, Boxed>where
I: IntoIterator<Item = T>,
impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, u32, Boxed>where
I: IntoIterator<Item = T>,
Source§impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, u8, Bare>where
I: IntoIterator<Item = T>,
impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, u8, Bare>where
I: IntoIterator<Item = T>,
Source§impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, u8, Boxed>where
I: IntoIterator<Item = T>,
impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, u8, Boxed>where
I: IntoIterator<Item = T>,
Source§impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, usize, Bare>where
I: IntoIterator<Item = T>,
impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, usize, Bare>where
I: IntoIterator<Item = T>,
Source§impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, usize, Boxed>where
I: IntoIterator<Item = T>,
impl<T: Default, I, const CAP: usize> From<I> for Destaque<T, CAP, usize, Boxed>where
I: IntoIterator<Item = T>,
Source§impl<T: Ord, const CAP: usize, S: Storage> Ord for Destaque<T, CAP, u16, S>
impl<T: Ord, const CAP: usize, S: Storage> Ord for Destaque<T, CAP, u16, S>
Source§impl<T: Ord, const CAP: usize, S: Storage> Ord for Destaque<T, CAP, u32, S>
impl<T: Ord, const CAP: usize, S: Storage> Ord for Destaque<T, CAP, u32, S>
Source§impl<T: Ord, const CAP: usize, S: Storage> Ord for Destaque<T, CAP, u8, S>
impl<T: Ord, const CAP: usize, S: Storage> Ord for Destaque<T, CAP, u8, S>
Source§impl<T: Ord, const CAP: usize, S: Storage> Ord for Destaque<T, CAP, usize, S>
impl<T: Ord, const CAP: usize, S: Storage> Ord for Destaque<T, CAP, usize, S>
Source§impl<T: PartialEq, const CAP: usize, IDX: PartialEq, S: Storage> PartialEq for Destaque<T, CAP, IDX, S>
impl<T: PartialEq, const CAP: usize, IDX: PartialEq, S: Storage> PartialEq for Destaque<T, CAP, IDX, S>
Source§impl<T: PartialOrd, const CAP: usize, S: Storage> PartialOrd for Destaque<T, CAP, u16, S>
impl<T: PartialOrd, const CAP: usize, S: Storage> PartialOrd for Destaque<T, CAP, u16, S>
Source§impl<T: PartialOrd, const CAP: usize, S: Storage> PartialOrd for Destaque<T, CAP, u32, S>
impl<T: PartialOrd, const CAP: usize, S: Storage> PartialOrd for Destaque<T, CAP, u32, S>
Source§impl<T: PartialOrd, const CAP: usize, S: Storage> PartialOrd for Destaque<T, CAP, u8, S>
impl<T: PartialOrd, const CAP: usize, S: Storage> PartialOrd for Destaque<T, CAP, u8, S>
Source§impl<T: PartialOrd, const CAP: usize, S: Storage> PartialOrd for Destaque<T, CAP, usize, S>
impl<T: PartialOrd, const CAP: usize, S: Storage> PartialOrd for Destaque<T, CAP, usize, S>
Source§impl<__S: Fallible + ?Sized, T, const CAP: usize, IDX, S: Storage> Serialize<__S> for Destaque<T, CAP, IDX, S>
impl<__S: Fallible + ?Sized, T, const CAP: usize, IDX, S: Storage> Serialize<__S> for Destaque<T, CAP, IDX, S>
impl<T: Copy, const CAP: usize, IDX: Copy, S: Storage> Copy for Destaque<T, CAP, IDX, S>
impl<T: Eq, const CAP: usize, IDX: Eq, S: Storage> Eq for Destaque<T, CAP, IDX, S>
Auto Trait Implementations§
impl<T, const CAP: usize, IDX, S> Freeze for Destaque<T, CAP, IDX, S>
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>
impl<T, const CAP: usize, IDX, S> Sync for Destaque<T, CAP, IDX, S>
impl<T, const CAP: usize, IDX, S> Unpin for Destaque<T, CAP, IDX, S>
impl<T, const CAP: usize, IDX, S> UnwindSafe for Destaque<T, CAP, IDX, S>
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
§type Archived = <T as Archive>::Archived
type Archived = <T as Archive>::Archived
Archive
, it may be
unsized. Read more§fn archived_metadata(
&self,
) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
fn archived_metadata( &self, ) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> ByteSized for T
impl<T> ByteSized for T
Source§const BYTE_ALIGN: usize = _
const BYTE_ALIGN: usize = _
Source§fn byte_align(&self) -> usize ⓘ
fn byte_align(&self) -> usize ⓘ
Source§fn ptr_size_ratio(&self) -> [usize; 2]
fn ptr_size_ratio(&self) -> [usize; 2]
Source§impl<T, R> Chain<R> for Twhere
T: ?Sized,
impl<T, R> Chain<R> for Twhere
T: ?Sized,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<T> ExtAny for T
impl<T> ExtAny for T
Source§fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
Source§impl<T> ExtMem for Twhere
T: ?Sized,
impl<T> ExtMem for Twhere
T: ?Sized,
Source§const NEEDS_DROP: bool = _
const NEEDS_DROP: bool = _
Source§fn mem_align_of_val(&self) -> usize ⓘ
fn mem_align_of_val(&self) -> usize ⓘ
Source§fn mem_size_of_val(&self) -> usize ⓘ
fn mem_size_of_val(&self) -> usize ⓘ
Source§fn mem_needs_drop(&self) -> bool
fn mem_needs_drop(&self) -> bool
true
if dropping values of this type matters. Read moreSource§fn mem_forget(self)where
Self: Sized,
fn mem_forget(self)where
Self: Sized,
self
without running its destructor. Read moreSource§fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
Source§unsafe fn mem_zeroed<T>() -> T
unsafe fn mem_zeroed<T>() -> T
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§fn mem_as_bytes(&self) -> &[u8] ⓘ
fn mem_as_bytes(&self) -> &[u8] ⓘ
unsafe_slice
only.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Hook for T
impl<T> Hook for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out
indicating that a T
is niched.