[][src]Struct vec_mut_scan::VecGrowScanItem

#[repr(transparent)]pub struct VecGrowScanItem<'s, 'a, T: 'a> { /* fields omitted */ }

Reference wrapper that enables item insertion and removal for VecGrowScan.

Implementations

impl<'s, 'a, T: 'a> VecGrowScanItem<'s, 'a, T>[src]

pub fn remove(mut self: Self) -> T[src]

Removes and returns this item from the vector.

pub fn replace(mut self: Self, value: T) -> T[src]

Replaces this item with a new value, returns the old value.

This is equivalent to assigning a new value or calling std::mem::replace on the mutable reference obtained by using DerefMut, but can avoid an intermediate move within the vector's buffer.

pub fn replace_with_many(
    mut self: Self,
    values: impl IntoIterator<Item = T>
) -> T
[src]

Replace the current item with a sequence of items. Returns the replaced item.

pub fn replace_with(mut self: Self, f: impl FnOnce(T) -> T)[src]

Like replace, but compute the replacement value with ownership of the removed item.

pub fn replace_with_many_with<F, I>(mut self: Self, f: F) where
    F: FnOnce(T) -> I,
    I: IntoIterator<Item = T>, 
[src]

Like replace_with_many, but compute the replacement sequence with ownership of the removed item.

pub fn insert_before(&mut self, value: T)[src]

Insert an item before the current item.

pub fn insert_many_before(&mut self, values: impl IntoIterator<Item = T>)[src]

Insert a sequence of items before the current item.

Equivalent to repeatedly calling insert_before, except that reallocations will be minimized with iterator size hints.

pub fn insert_after(self, value: T)[src]

Insert an item after the current item. Inserted items are not returned during iteration.

Note that this consumes the VecGrowScanItem, as it is necessary to commit that the current item will not be removed. If you need to insert multiple elements, you can either use insert_many_after, or use VecGrowScan::insert after you drop this VecGrowScanItem.

pub fn insert_many_after(self, values: impl IntoIterator<Item = T>)[src]

Insert a sequence of items after the current item. Inserted items are not returned during iteration.

Note that this consumes the VecGrowScanItem, as it is necessary to commit that the current item will not be removed. If you need to insert more elements, you can use VecGrowScan::insert (or insert_many) after you drop this VecGrowScanItem.

pub fn slices(&self) -> (&[T], &[T], &[T], &[T])[src]

Access the whole vector.

This provides access to the whole vector at any point during the scan. In general while scanning, the vector content is not contiguous, and some of the contents may be kept out-of-place in a VecDeque. Thus the content is returned as four slices. The first three slices, in order, contain all elements already visited, while the fourth slice contains the remaining elements starting with this element.

This method is also present on the VecGrowScan borrowed by this reference wrapper, allowing access without an active VecGrowScanItem.

pub fn slices_mut(&mut self) -> (&mut [T], &mut [T], &mut [T], &mut [T])[src]

Access and mutate the whole vector.

This provides mutable access to the whole vector at any point during the scan. In general while scanning, the vector content is not contiguous, and some of the contents may be kept out-of-place in a VecDeque. Thus the content is returned as four slices. The first three slices, in order, contain all elements already visited, while the fourth slice contains the remaining elements starting with this element.

This method is also present on the VecGrowScan borrowed by this reference wrapper, allowing access without an active VecGrowScanItem.

Trait Implementations

impl<'s, 'a, T: 'a> Deref for VecGrowScanItem<'s, 'a, T>[src]

type Target = T

The resulting type after dereferencing.

impl<'s, 'a, T: 'a> DerefMut for VecGrowScanItem<'s, 'a, T>[src]

impl<'s, 'a, T: 'a> Drop for VecGrowScanItem<'s, 'a, T>[src]

Auto Trait Implementations

impl<'s, 'a, T> RefUnwindSafe for VecGrowScanItem<'s, 'a, T> where
    T: RefUnwindSafe
[src]

impl<'s, 'a, T> !Send for VecGrowScanItem<'s, 'a, T>[src]

impl<'s, 'a, T> !Sync for VecGrowScanItem<'s, 'a, T>[src]

impl<'s, 'a, T> Unpin for VecGrowScanItem<'s, 'a, T> where
    'a: 's, 
[src]

impl<'s, 'a, T> !UnwindSafe for VecGrowScanItem<'s, 'a, T>[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.