pub enum NonMutatingUseContext {
Inspect,
Copy,
Move,
SharedBorrow,
FakeBorrow,
RawBorrow,
PlaceMention,
Projection,
}
Variants§
Inspect
Being inspected in some way, like loading a len.
Copy
Consumed as part of an operand.
Move
Consumed as part of an operand.
Shared borrow.
FakeBorrow
A fake borrow. FIXME: do we need to distinguish shallow and deep fake borrows? In fact, do we need to distinguish fake and normal deep borrows?
RawBorrow
&raw const
.
PlaceMention
PlaceMention statement.
This statement is executed as a check that the Place
is live without reading from it,
so it must be considered as a non-mutating use.
Projection
Used as base for another place, e.g., x
in x.y
. Will not mutate the place.
For example, the projection x.y
is not marked as a mutation in these cases:
ⓘ
z = x.y;
f(&x.y);
Auto Trait Implementations§
impl Freeze for NonMutatingUseContext
impl RefUnwindSafe for NonMutatingUseContext
impl Send for NonMutatingUseContext
impl Sync for NonMutatingUseContext
impl Unpin for NonMutatingUseContext
impl UnwindSafe for NonMutatingUseContext
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