pub struct ModularMutationVisitor<'a, 'tcx, F>{ /* private fields */ }
Expand description
MIR visitor that invokes a callback for every Mutation
in the visited object.
Construct the visitor with ModularMutationVisitor::new
, then call one of the
MIR Visitor
methods.
Implementations§
Trait Implementations§
Source§impl<'tcx, F> Visitor<'tcx> for ModularMutationVisitor<'_, 'tcx, F>
impl<'tcx, F> Visitor<'tcx> for ModularMutationVisitor<'_, 'tcx, F>
fn visit_assign( &mut self, mutated: &Place<'tcx>, rvalue: &Rvalue<'tcx>, location: Location, )
fn visit_terminator( &mut self, terminator: &Terminator<'tcx>, location: Location, )
fn visit_body(&mut self, body: &Body<'tcx>)
fn visit_basic_block_data( &mut self, block: BasicBlock, data: &BasicBlockData<'tcx>, )
fn visit_source_scope_data(&mut self, scope_data: &SourceScopeData<'tcx>)
fn visit_statement(&mut self, statement: &Statement<'tcx>, location: Location)
fn visit_assert_message( &mut self, msg: &AssertKind<Operand<'tcx>>, location: Location, )
fn visit_rvalue(&mut self, rvalue: &Rvalue<'tcx>, location: Location)
fn visit_operand(&mut self, operand: &Operand<'tcx>, location: Location)
fn visit_ascribe_user_ty( &mut self, place: &Place<'tcx>, variance: Variance, user_ty: &UserTypeProjection, location: Location, )
fn visit_coverage(&mut self, kind: &CoverageKind, location: Location)
fn visit_retag( &mut self, kind: RetagKind, place: &Place<'tcx>, location: Location, )
fn visit_place( &mut self, place: &Place<'tcx>, context: PlaceContext, location: Location, )
fn visit_projection( &mut self, place_ref: PlaceRef<'tcx>, context: PlaceContext, location: Location, )
fn visit_projection_elem( &mut self, place_ref: PlaceRef<'tcx>, elem: ProjectionElem<Local, Ty<'tcx>>, context: PlaceContext, location: Location, )
fn super_place( &mut self, place: &Place<'tcx>, context: PlaceContext, location: Location, )
fn super_projection( &mut self, place_ref: PlaceRef<'tcx>, context: PlaceContext, location: Location, )
fn super_projection_elem( &mut self, _place_ref: PlaceRef<'tcx>, elem: ProjectionElem<Local, Ty<'tcx>>, _context: PlaceContext, location: Location, )
Source§fn visit_const_operand(
&mut self,
constant: &ConstOperand<'tcx>,
location: Location,
)
fn visit_const_operand( &mut self, constant: &ConstOperand<'tcx>, location: Location, )
This is called for every constant in the MIR body and every
required_consts
(i.e., including consts that have been dead-code-eliminated).fn visit_ty_const(&mut self, ct: Const<'tcx>, location: Location)
fn visit_span(&mut self, span: Span)
fn visit_source_info(&mut self, source_info: &SourceInfo)
fn visit_ty(&mut self, ty: Ty<'tcx>, _: TyContext)
fn visit_user_type_projection(&mut self, ty: &UserTypeProjection)
fn visit_user_type_annotation( &mut self, index: UserTypeAnnotationIndex, ty: &CanonicalUserTypeAnnotation<'tcx>, )
fn visit_region(&mut self, region: Region<'tcx>, _: Location)
fn visit_args( &mut self, args: &&'tcx RawList<(), GenericArg<'tcx>>, _: Location, )
fn visit_local_decl(&mut self, local: Local, local_decl: &LocalDecl<'tcx>)
fn visit_var_debug_info(&mut self, var_debug_info: &VarDebugInfo<'tcx>)
fn visit_local( &mut self, _local: Local, _context: PlaceContext, _location: Location, )
fn visit_source_scope(&mut self, scope: SourceScope)
fn super_body(&mut self, body: &Body<'tcx>)
fn super_basic_block_data( &mut self, block: BasicBlock, data: &BasicBlockData<'tcx>, )
fn super_source_scope_data(&mut self, scope_data: &SourceScopeData<'tcx>)
fn super_statement(&mut self, statement: &Statement<'tcx>, location: Location)
fn super_assign( &mut self, place: &Place<'tcx>, rvalue: &Rvalue<'tcx>, location: Location, )
fn super_terminator( &mut self, terminator: &Terminator<'tcx>, location: Location, )
fn super_assert_message( &mut self, msg: &AssertKind<Operand<'tcx>>, location: Location, )
fn super_rvalue(&mut self, rvalue: &Rvalue<'tcx>, location: Location)
fn super_operand(&mut self, operand: &Operand<'tcx>, location: Location)
fn super_ascribe_user_ty( &mut self, place: &Place<'tcx>, variance: Variance, user_ty: &UserTypeProjection, location: Location, )
fn super_coverage(&mut self, _kind: &CoverageKind, _location: Location)
fn super_retag( &mut self, _kind: RetagKind, place: &Place<'tcx>, location: Location, )
fn super_local_decl(&mut self, local: Local, local_decl: &LocalDecl<'tcx>)
fn super_var_debug_info(&mut self, var_debug_info: &VarDebugInfo<'tcx>)
fn super_source_scope(&mut self, _scope: SourceScope)
fn super_const_operand( &mut self, constant: &ConstOperand<'tcx>, location: Location, )
fn super_ty_const(&mut self, _ct: Const<'tcx>, _location: Location)
fn super_span(&mut self, _span: Span)
fn super_source_info(&mut self, source_info: &SourceInfo)
fn super_user_type_projection(&mut self, _ty: &UserTypeProjection)
fn super_user_type_annotation( &mut self, _index: UserTypeAnnotationIndex, ty: &CanonicalUserTypeAnnotation<'tcx>, )
fn super_ty(&mut self, _ty: Ty<'tcx>)
fn super_region(&mut self, _region: Region<'tcx>)
fn super_args(&mut self, _args: &&'tcx RawList<(), GenericArg<'tcx>>)
fn visit_location(&mut self, body: &Body<'tcx>, location: Location)
Auto Trait Implementations§
impl<'a, 'tcx, F> Freeze for ModularMutationVisitor<'a, 'tcx, F>where
F: Freeze,
impl<'a, 'tcx, F> !RefUnwindSafe for ModularMutationVisitor<'a, 'tcx, F>
impl<'a, 'tcx, F> !Send for ModularMutationVisitor<'a, 'tcx, F>
impl<'a, 'tcx, F> !Sync for ModularMutationVisitor<'a, 'tcx, F>
impl<'a, 'tcx, F> Unpin for ModularMutationVisitor<'a, 'tcx, F>where
F: Unpin,
impl<'a, 'tcx, F> !UnwindSafe for ModularMutationVisitor<'a, 'tcx, F>
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
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>
Converts
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>
Converts
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