pub(crate) struct PlaceWithOrigin {
pub origins: SmallVec<[CaptureSourceStack; 2]>,
pub place: Place,
}Expand description
A PlaceWithOrigin represents how a value is located in memory. This does not
always correspond to a syntactic place expression. For example, when
processing a pattern, a Place can be used to refer to the sub-value
currently being inspected.
Fields§
§origins: SmallVec<[CaptureSourceStack; 2]>ExprIds or PatIds of the expressions or patterns producing this value.
place: PlaceInformation about the Place.
Implementations§
Source§impl PlaceWithOrigin
impl PlaceWithOrigin
fn new_no_projections<'db>( origin: impl Into<ExprOrPatIdPacked>, base_ty: Ty<'db>, base: PlaceBase, ) -> PlaceWithOrigin
fn new<'db>( origins: SmallVec<[CaptureSourceStack; 2]>, base_ty: Ty<'db>, base: PlaceBase, projections: Vec<Projection>, ) -> PlaceWithOrigin
fn push_projection(&mut self, projection: Projection, origin: ExprOrPatIdPacked)
pub(crate) fn span(&self) -> Span
Trait Implementations§
Source§impl Clone for PlaceWithOrigin
impl Clone for PlaceWithOrigin
Source§fn clone(&self) -> PlaceWithOrigin
fn clone(&self) -> PlaceWithOrigin
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for PlaceWithOrigin
impl Debug for PlaceWithOrigin
Source§impl Hash for PlaceWithOrigin
impl Hash for PlaceWithOrigin
Source§impl PartialEq for PlaceWithOrigin
impl PartialEq for PlaceWithOrigin
Source§fn eq(&self, other: &PlaceWithOrigin) -> bool
fn eq(&self, other: &PlaceWithOrigin) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Eq for PlaceWithOrigin
impl StructuralPartialEq for PlaceWithOrigin
Auto Trait Implementations§
impl Freeze for PlaceWithOrigin
impl RefUnwindSafe for PlaceWithOrigin
impl Send for PlaceWithOrigin
impl Sync for PlaceWithOrigin
impl Unpin for PlaceWithOrigin
impl UnsafeUnpin for PlaceWithOrigin
impl UnwindSafe for PlaceWithOrigin
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<T> HashEqLike<T> for T
impl<T> HashEqLike<T> for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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