Struct build_array::ArrayBuilder
source · pub struct ArrayBuilder<T, const N: usize> { /* private fields */ }
Expand description
Build an array dynamically without heap allocations.
See module documentation for more.
Implementations§
source§impl<T, const N: usize> ArrayBuilder<T, N>
impl<T, const N: usize> ArrayBuilder<T, N>
sourcepub fn push(&mut self, item: T) -> &mut Self
pub fn push(&mut self, item: T) -> &mut Self
Insert an item into the builder.
If the builder is already full, the item is immediately dropped.
sourcepub fn build_pad(&mut self, item: T) -> Result<[T; N], Error>where
T: Clone,
pub fn build_pad(&mut self, item: T) -> Result<[T; N], Error>where
T: Clone,
Pad out the array, returning an Err
if there were too many calls to Self::push
.
The builder remains unchanged in the Err
case.
let arr = ArrayBuilder::<_, 3>::new().push("first").build_pad("padding").unwrap();
assert_eq!(arr, ["first", "padding", "padding"]);
ArrayBuilder::<_, 1>::new().push("first").push("too many now!").build_pad("").unwrap_err();
sourcepub fn build_pad_truncate(&mut self, item: T) -> [T; N]where
T: Clone,
pub fn build_pad_truncate(&mut self, item: T) -> [T; N]where
T: Clone,
Pad out the array, ignoring if there were too many calls to Self::push
.
The builder is restored to an empty state.
let arr = ArrayBuilder::<_, 3>::new().push("first").build_pad_truncate("padding");
assert_eq!(arr, ["first", "padding", "padding"]);
let arr =
ArrayBuilder::<_, 1>::new().push("first").push("too many now!").build_pad_truncate("");
assert_eq!(arr, ["first"]);
sourcepub fn build_exact(&mut self) -> Result<[T; N], Error>
pub fn build_exact(&mut self) -> Result<[T; N], Error>
Require exactly N
calls to Self::push
.
The builder remains unchanged in the Err
case.
ArrayBuilder::<_, 2>::new().push("too few").build_exact().unwrap_err();
ArrayBuilder::<_, 2>::new().push("way").push("too").push("many").build_exact().unwrap_err();
ArrayBuilder::<_, 2>::new().push("just").push("right").build_exact().unwrap();
sourcepub fn as_slice(&self) -> &[T]
pub fn as_slice(&self) -> &[T]
Return the current collection of items in the array.
Does not include excess items.
sourcepub fn as_mut_slice(&mut self) -> &mut [T]
pub fn as_mut_slice(&mut self) -> &mut [T]
Return the current collection of items in the array.
Does not include excess items.
Trait Implementations§
source§impl<T: Clone, const N: usize> Clone for ArrayBuilder<T, N>
impl<T: Clone, const N: usize> Clone for ArrayBuilder<T, N>
source§fn clone(&self) -> ArrayBuilder<T, N>
fn clone(&self) -> ArrayBuilder<T, N>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<T: Default, const N: usize> Default for ArrayBuilder<T, N>
impl<T: Default, const N: usize> Default for ArrayBuilder<T, N>
source§fn default() -> ArrayBuilder<T, N>
fn default() -> ArrayBuilder<T, N>
Returns the “default value” for a type. Read more
source§impl<T, const N: usize> Extend<T> for ArrayBuilder<T, N>
impl<T, const N: usize> Extend<T> for ArrayBuilder<T, N>
source§fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I)
Extends a collection with the contents of an iterator. Read more
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
🔬This is a nightly-only experimental API. (
extend_one
)Extends a collection with exactly one element.
source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
🔬This is a nightly-only experimental API. (
extend_one
)Reserves capacity in a collection for the given number of additional elements. Read more
source§impl<T, const N: usize> FromIterator<T> for ArrayBuilder<T, N>
impl<T, const N: usize> FromIterator<T> for ArrayBuilder<T, N>
source§fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
Creates a value from an iterator. Read more
source§impl<T: Ord, const N: usize> Ord for ArrayBuilder<T, N>
impl<T: Ord, const N: usize> Ord for ArrayBuilder<T, N>
source§fn cmp(&self, other: &ArrayBuilder<T, N>) -> Ordering
fn cmp(&self, other: &ArrayBuilder<T, N>) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
source§impl<T: PartialEq, const N: usize> PartialEq for ArrayBuilder<T, N>
impl<T: PartialEq, const N: usize> PartialEq for ArrayBuilder<T, N>
source§fn eq(&self, other: &ArrayBuilder<T, N>) -> bool
fn eq(&self, other: &ArrayBuilder<T, N>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl<T: PartialOrd, const N: usize> PartialOrd for ArrayBuilder<T, N>
impl<T: PartialOrd, const N: usize> PartialOrd for ArrayBuilder<T, N>
source§fn partial_cmp(&self, other: &ArrayBuilder<T, N>) -> Option<Ordering>
fn partial_cmp(&self, other: &ArrayBuilder<T, N>) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moreimpl<T: Eq, const N: usize> Eq for ArrayBuilder<T, N>
impl<T, const N: usize> StructuralPartialEq for ArrayBuilder<T, N>
Auto Trait Implementations§
impl<T, const N: usize> Freeze for ArrayBuilder<T, N>where
T: Freeze,
impl<T, const N: usize> RefUnwindSafe for ArrayBuilder<T, N>where
T: RefUnwindSafe,
impl<T, const N: usize> Send for ArrayBuilder<T, N>where
T: Send,
impl<T, const N: usize> Sync for ArrayBuilder<T, N>where
T: Sync,
impl<T, const N: usize> Unpin for ArrayBuilder<T, N>where
T: Unpin,
impl<T, const N: usize> UnwindSafe for ArrayBuilder<T, N>where
T: UnwindSafe,
Blanket Implementations§
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
Mutably borrows from an owned value. Read more