pub enum DesugaringKind {
CondTemporary,
QuestionMark,
TryBlock,
YeetExpr,
OpaqueTy,
Async,
Await,
ForLoop,
WhileLoop,
BoundModifier,
IndexBoundsCheckReborrow,
}
Expand description
The kind of compiler desugaring.
Variants§
CondTemporary
We desugar if c { i } else { e }
to match $ExprKind::Use(c) { true => i, _ => e }
.
However, we do not want to blame c
for unreachability but rather say that i
is unreachable. This desugaring kind allows us to avoid blaming c
.
This also applies to while
loops.
QuestionMark
TryBlock
YeetExpr
OpaqueTy
Desugaring of an impl Trait
in return type position
to an type Foo = impl Trait;
and replacing the
impl Trait
with Foo
.
Async
Await
ForLoop
WhileLoop
BoundModifier
async Fn()
bound modifier
IndexBoundsCheckReborrow
Marks a &raw const *_1
needed as part of getting the length of a mutable
slice for the bounds check, so that MIRI’s retag handling can recognize it.
Implementations§
Trait Implementations§
Source§impl Clone for DesugaringKind
impl Clone for DesugaringKind
Source§fn clone(&self) -> DesugaringKind
fn clone(&self) -> DesugaringKind
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for DesugaringKind
impl Debug for DesugaringKind
Source§impl<__D: SpanDecoder> Decodable<__D> for DesugaringKind
impl<__D: SpanDecoder> Decodable<__D> for DesugaringKind
Source§impl<__E: SpanEncoder> Encodable<__E> for DesugaringKind
impl<__E: SpanEncoder> Encodable<__E> for DesugaringKind
Source§impl<__CTX> HashStable<__CTX> for DesugaringKindwhere
__CTX: HashStableContext,
impl<__CTX> HashStable<__CTX> for DesugaringKindwhere
__CTX: HashStableContext,
fn hash_stable(&self, __hcx: &mut __CTX, __hasher: &mut StableHasher)
Source§impl PartialEq for DesugaringKind
impl PartialEq for DesugaringKind
impl Copy for DesugaringKind
impl StructuralPartialEq for DesugaringKind
Auto Trait Implementations§
impl DynSend for DesugaringKind
impl DynSync for DesugaringKind
impl Freeze for DesugaringKind
impl RefUnwindSafe for DesugaringKind
impl Send for DesugaringKind
impl Sync for DesugaringKind
impl Unpin for DesugaringKind
impl UnwindSafe for DesugaringKind
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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<T> Pointable for T
impl<T> Pointable for 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<'a, T> Captures<'a> for Twhere
T: ?Sized,
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: 1 byte
Size for each variant:
CondTemporary
: 0 bytesQuestionMark
: 0 bytesTryBlock
: 0 bytesYeetExpr
: 0 bytesOpaqueTy
: 0 bytesAsync
: 0 bytesAwait
: 0 bytesForLoop
: 0 bytesWhileLoop
: 0 bytesBoundModifier
: 0 bytesIndexBoundsCheckReborrow
: 0 bytes