Trait rustc_hir_analysis::expr_use_visitor::Delegate
source · [−]pub trait Delegate<'tcx> {
fn consume(
&mut self,
place_with_id: &PlaceWithHirId<'tcx>,
diag_expr_id: HirId
);
fn borrow(
&mut self,
place_with_id: &PlaceWithHirId<'tcx>,
diag_expr_id: HirId,
bk: BorrowKind
);
fn mutate(
&mut self,
assignee_place: &PlaceWithHirId<'tcx>,
diag_expr_id: HirId
);
fn fake_read(
&mut self,
place_with_id: &PlaceWithHirId<'tcx>,
cause: FakeReadCause,
diag_expr_id: HirId
);
fn copy(&mut self, place_with_id: &PlaceWithHirId<'tcx>, diag_expr_id: HirId) { ... }
fn bind(&mut self, binding_place: &PlaceWithHirId<'tcx>, diag_expr_id: HirId) { ... }
}
Expand description
This trait defines the callbacks you can expect to receive when employing the ExprUseVisitor.
Required Methods
sourcefn consume(&mut self, place_with_id: &PlaceWithHirId<'tcx>, diag_expr_id: HirId)
fn consume(&mut self, place_with_id: &PlaceWithHirId<'tcx>, diag_expr_id: HirId)
The value found at place
is moved, depending
on mode
. Where diag_expr_id
is the id used for diagnostics for place
.
Use of a Copy
type in a ByValue context is considered a use
by ImmBorrow
and borrow
is called instead. This is because
a shared borrow is the “minimum access” that would be needed
to perform a copy.
The parameter diag_expr_id
indicates the HIR id that ought to be used for
diagnostics. Around pattern matching such as let pat = expr
, the diagnostic
id will be the id of the expression expr
but the place itself will have
the id of the binding in the pattern pat
.
sourcefn borrow(
&mut self,
place_with_id: &PlaceWithHirId<'tcx>,
diag_expr_id: HirId,
bk: BorrowKind
)
fn borrow(
&mut self,
place_with_id: &PlaceWithHirId<'tcx>,
diag_expr_id: HirId,
bk: BorrowKind
)
The value found at place
is being borrowed with kind bk
.
diag_expr_id
is the id used for diagnostics (see consume
for more details).
sourcefn mutate(&mut self, assignee_place: &PlaceWithHirId<'tcx>, diag_expr_id: HirId)
fn mutate(&mut self, assignee_place: &PlaceWithHirId<'tcx>, diag_expr_id: HirId)
The path at assignee_place
is being assigned to.
diag_expr_id
is the id used for diagnostics (see consume
for more details).
sourcefn fake_read(
&mut self,
place_with_id: &PlaceWithHirId<'tcx>,
cause: FakeReadCause,
diag_expr_id: HirId
)
fn fake_read(
&mut self,
place_with_id: &PlaceWithHirId<'tcx>,
cause: FakeReadCause,
diag_expr_id: HirId
)
The place
should be a fake read because of specified cause
.
Provided Methods
sourcefn copy(&mut self, place_with_id: &PlaceWithHirId<'tcx>, diag_expr_id: HirId)
fn copy(&mut self, place_with_id: &PlaceWithHirId<'tcx>, diag_expr_id: HirId)
The value found at place
is being copied.
diag_expr_id
is the id used for diagnostics (see consume
for more details).
sourcefn bind(&mut self, binding_place: &PlaceWithHirId<'tcx>, diag_expr_id: HirId)
fn bind(&mut self, binding_place: &PlaceWithHirId<'tcx>, diag_expr_id: HirId)
The path at binding_place
is a binding that is being initialized.
This covers cases such as let x = 42;