Struct rustc_typeck::expr_use_visitor::ExprUseVisitor [−][src]
Fields
mc: MemCategorizationContext<'a, 'tcx>body_owner: LocalDefIddelegate: &'a mut dyn Delegate<'tcx>Implementations
impl<'a, 'tcx> ExprUseVisitor<'a, 'tcx>[src]
pub fn new(
delegate: &'a mut (dyn Delegate<'tcx> + 'a),
infcx: &'a InferCtxt<'a, 'tcx>,
body_owner: LocalDefId,
param_env: ParamEnv<'tcx>,
typeck_results: &'a TypeckResults<'tcx>
) -> Self[src]
delegate: &'a mut (dyn Delegate<'tcx> + 'a),
infcx: &'a InferCtxt<'a, 'tcx>,
body_owner: LocalDefId,
param_env: ParamEnv<'tcx>,
typeck_results: &'a TypeckResults<'tcx>
) -> Self
Creates the ExprUseVisitor, configuring it with the various options provided:
delegate– who receives the callbacksparam_env— parameter environment for trait lookups (esp. pertaining toCopy)typeck_results— typeck results for the code being analyzed
pub fn consume_body(&mut self, body: &Body<'_>)[src]
fn tcx(&self) -> TyCtxt<'tcx>[src]
fn delegate_consume(
&mut self,
place_with_id: &PlaceWithHirId<'tcx>,
diag_expr_id: HirId
)[src]
&mut self,
place_with_id: &PlaceWithHirId<'tcx>,
diag_expr_id: HirId
)
fn consume_exprs(&mut self, exprs: &[Expr<'_>])[src]
pub fn consume_expr(&mut self, expr: &Expr<'_>)[src]
fn mutate_expr(&mut self, expr: &Expr<'_>)[src]
fn borrow_expr(&mut self, expr: &Expr<'_>, bk: BorrowKind)[src]
fn select_from_expr(&mut self, expr: &Expr<'_>)[src]
pub fn walk_expr(&mut self, expr: &Expr<'_>)[src]
fn walk_stmt(&mut self, stmt: &Stmt<'_>)[src]
fn walk_local(&mut self, local: &Local<'_>)[src]
fn walk_block(&mut self, blk: &Block<'_>)[src]
Indicates that the value of blk will be consumed, meaning either copied or moved
depending on its type.
fn walk_struct_expr<'hir>(
&mut self,
fields: &[ExprField<'_>],
opt_with: &Option<&'hir Expr<'_>>
)[src]
&mut self,
fields: &[ExprField<'_>],
opt_with: &Option<&'hir Expr<'_>>
)
fn walk_adjustment(&mut self, expr: &Expr<'_>)[src]
fn walk_autoref(
&mut self,
expr: &Expr<'_>,
base_place: &PlaceWithHirId<'tcx>,
autoref: &AutoBorrow<'tcx>
)[src]
&mut self,
expr: &Expr<'_>,
base_place: &PlaceWithHirId<'tcx>,
autoref: &AutoBorrow<'tcx>
)
Walks the autoref autoref applied to the autoderef’d
expr. base_place is the mem-categorized form of expr
after all relevant autoderefs have occurred.
fn walk_arm(&mut self, discr_place: &PlaceWithHirId<'tcx>, arm: &Arm<'_>)[src]
fn walk_irrefutable_pat(
&mut self,
discr_place: &PlaceWithHirId<'tcx>,
pat: &Pat<'_>
)[src]
&mut self,
discr_place: &PlaceWithHirId<'tcx>,
pat: &Pat<'_>
)
Walks a pat that occurs in isolation (i.e., top-level of fn argument or let binding, and not a match arm or nested pat.)
fn walk_pat(&mut self, discr_place: &PlaceWithHirId<'tcx>, pat: &Pat<'_>)[src]
The core driver for walking a pattern
fn walk_captures(&mut self, closure_expr: &Expr<'_>)[src]
Handle the case where the current body contains a closure.
When the current body being handled is a closure, then we must make sure that
- The parent closure only captures Places from the nested closure that are not local to it.
In the following example the closures c only captures p.x`` even though incr`
is a capture of the nested closure
let p = ..; let c = || { let incr = 10; let nested = || p.x += incr; }
- When reporting the Place back to the Delegate, ensure that the UpvarId uses the enclosing closure as the DefId.
Auto Trait Implementations
impl<'a, 'tcx> !RefUnwindSafe for ExprUseVisitor<'a, 'tcx>
impl<'a, 'tcx> !Send for ExprUseVisitor<'a, 'tcx>
impl<'a, 'tcx> !Sync for ExprUseVisitor<'a, 'tcx>
impl<'a, 'tcx> Unpin for ExprUseVisitor<'a, 'tcx> where
'tcx: 'a,
'tcx: 'a,
impl<'a, 'tcx> !UnwindSafe for ExprUseVisitor<'a, 'tcx>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<'a, T> Captures<'a> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.