Struct chalk_ir::fold::in_place::VecMappedInPlace

source ·
struct VecMappedInPlace<T, U> {
    ptr: *mut T,
    len: usize,
    cap: usize,
    map_in_progress: usize,
    _elem_tys: PhantomData<(T, U)>,
}
Expand description

Takes ownership of a Vec that is being mapped in place, cleaning up if the map fails.

Fields§

§ptr: *mut T§len: usize§cap: usize§map_in_progress: usize§_elem_tys: PhantomData<(T, U)>

Implementations§

source§

impl<T, U> VecMappedInPlace<T, U>

source

fn new(vec: Vec<T>) -> Self

source

unsafe fn finish(self) -> Vec<U>

Converts back into a Vec once the map is complete.

Trait Implementations§

source§

impl<T, U> Drop for VecMappedInPlace<T, U>

VecMappedInPlace drops everything but the element that was passed to map when it panicked or returned an error. Everything before that index in the vector has type U (it has been mapped) and everything after it has type T (it has not been mapped).

 mapped
 |      not yet mapped
 |----| |-----|
[UUUU UxTT TTTT]
       ^
   `map_in_progress` (not dropped)
source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<T, U> Freeze for VecMappedInPlace<T, U>

§

impl<T, U> RefUnwindSafe for VecMappedInPlace<T, U>

§

impl<T, U> !Send for VecMappedInPlace<T, U>

§

impl<T, U> !Sync for VecMappedInPlace<T, U>

§

impl<T, U> Unpin for VecMappedInPlace<T, U>
where T: Unpin, U: Unpin,

§

impl<T, U> UnwindSafe for VecMappedInPlace<T, U>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> Cast for T

source§

fn cast<U>(self, interner: U::Interner) -> U
where Self: CastTo<U>, U: HasInterner,

Cast a value to type U using CastTo.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

source§

fn into(self) -> U

Calls U::from(self).

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

source§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
source§

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

Performs the conversion.