struct ElaborateDropsCtxt<'a, 'tcx> {
    tcx: TyCtxt<'tcx>,
    body: &'a Body<'tcx>,
    env: &'a MoveDataParamEnv<'tcx>,
    init_data: InitializationData<'a, 'tcx>,
    drop_flags: IndexVec<MovePathIndex, Option<Local>>,
    patch: MirPatch<'tcx>,
}

Fields§

§tcx: TyCtxt<'tcx>§body: &'a Body<'tcx>§env: &'a MoveDataParamEnv<'tcx>§init_data: InitializationData<'a, 'tcx>§drop_flags: IndexVec<MovePathIndex, Option<Local>>§patch: MirPatch<'tcx>

Implementations§

source§

impl<'b, 'tcx> ElaborateDropsCtxt<'b, 'tcx>

source

fn move_data(&self) -> &'b MoveData<'tcx>

source

fn param_env(&self) -> ParamEnv<'tcx>

source

fn create_drop_flag(&mut self, index: MovePathIndex, span: Span)

source

fn drop_flag(&mut self, index: MovePathIndex) -> Option<Place<'tcx>>

source

fn elaborate(self) -> MirPatch<'tcx>

create a patch that elaborates all drops in the input MIR.

source

fn collect_drop_flags(&mut self)

source

fn elaborate_drops(&mut self)

source

fn constant_bool(&self, span: Span, val: bool) -> Rvalue<'tcx>

source

fn set_drop_flag( &mut self, loc: Location, path: MovePathIndex, val: DropFlagState )

source

fn drop_flags_on_init(&mut self)

source

fn drop_flags_for_fn_rets(&mut self)

source

fn drop_flags_for_args(&mut self)

source

fn drop_flags_for_locs(&mut self)

Auto Trait Implementations§

§

impl<'a, 'tcx> !RefUnwindSafe for ElaborateDropsCtxt<'a, 'tcx>

§

impl<'a, 'tcx> !Send for ElaborateDropsCtxt<'a, 'tcx>

§

impl<'a, 'tcx> !Sync for ElaborateDropsCtxt<'a, 'tcx>

§

impl<'a, 'tcx> Unpin for ElaborateDropsCtxt<'a, 'tcx>

§

impl<'a, 'tcx> !UnwindSafe for ElaborateDropsCtxt<'a, 'tcx>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere 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 Twhere 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 Twhere 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.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 448 bytes