pub(crate) enum AutorefOrPtrAdjustment {
Autoref {
mutbl: Mutability,
unsize: bool,
},
ToConstPtr,
ReborrowPin(Mutability),
}Expand description
When adjusting a receiver we often want to do one of
- Add a
&(or&mut), converting the receiver fromTto&T(or&mut T) - If the receiver has type
*mut T, convert it to*const T
This type tells us which one to do.
Note that in principle we could do both at the same time. For example, when the receiver has
type T, we could autoref it to &T, then convert to *const T. Or, when it has type *mut T, we could convert it to *const T, then autoref to &*const T. However, currently we do
(at most) one of these. Either the receiver has type T and we convert it to &T (or with
mut), or it has type *mut T and we convert it to *const T.
Variants§
Autoref
Receiver has type T, add & or &mut (if T is mut), and maybe also “unsize” it.
Unsizing is used to convert a [T; N] to [T], which only makes sense when autorefing.
Fields
mutbl: MutabilityToConstPtr
Receiver has type *mut T, convert to *const T
ReborrowPin(Mutability)
Reborrow a Pin<&mut T> or Pin<&T>.
Implementations§
Source§impl AutorefOrPtrAdjustment
impl AutorefOrPtrAdjustment
fn get_unsize(&self) -> bool
Trait Implementations§
Source§impl Clone for AutorefOrPtrAdjustment
impl Clone for AutorefOrPtrAdjustment
Source§fn clone(&self) -> AutorefOrPtrAdjustment
fn clone(&self) -> AutorefOrPtrAdjustment
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AutorefOrPtrAdjustment
impl Debug for AutorefOrPtrAdjustment
Source§impl PartialEq for AutorefOrPtrAdjustment
impl PartialEq for AutorefOrPtrAdjustment
impl Copy for AutorefOrPtrAdjustment
impl StructuralPartialEq for AutorefOrPtrAdjustment
Auto Trait Implementations§
impl DynSend for AutorefOrPtrAdjustment
impl DynSync for AutorefOrPtrAdjustment
impl Freeze for AutorefOrPtrAdjustment
impl RefUnwindSafe for AutorefOrPtrAdjustment
impl Send for AutorefOrPtrAdjustment
impl Sync for AutorefOrPtrAdjustment
impl Unpin for AutorefOrPtrAdjustment
impl UnwindSafe for AutorefOrPtrAdjustment
Blanket Implementations§
Source§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T
fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [T]
Source§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T
fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [T]
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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>
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>
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 moreSource§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
Source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
Source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed, ) -> T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 2 bytes
Size for each variant:
Autoref: 2 bytesToConstPtr: 0 bytesReborrowPin: 2 bytes