Enum rustc_hir::ClosureKind
source · pub enum ClosureKind {
Closure,
Coroutine(CoroutineKind),
CoroutineClosure(CoroutineDesugaring),
}
Variants§
Closure
This is a plain closure expression.
Coroutine(CoroutineKind)
This is a coroutine expression – i.e. a closure expression in which
we’ve found a yield
. These can arise either from “plain” coroutine
usage (e.g. let x = || { yield (); }
) or from a desugared expression
(e.g. async
and gen
blocks).
CoroutineClosure(CoroutineDesugaring)
This is a coroutine-closure, which is a special sugared closure that
returns one of the sugared coroutine (async
/gen
/async gen
). It
additionally allows capturing the coroutine’s upvars by ref, and therefore
needs to be specially treated during analysis and borrowck.
Trait Implementations§
source§impl Clone for ClosureKind
impl Clone for ClosureKind
source§fn clone(&self) -> ClosureKind
fn clone(&self) -> ClosureKind
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ClosureKind
impl Debug for ClosureKind
source§impl<__D: SpanDecoder> Decodable<__D> for ClosureKind
impl<__D: SpanDecoder> Decodable<__D> for ClosureKind
source§impl<__E: SpanEncoder> Encodable<__E> for ClosureKind
impl<__E: SpanEncoder> Encodable<__E> for ClosureKind
source§impl Hash for ClosureKind
impl Hash for ClosureKind
source§impl<__CTX> HashStable<__CTX> for ClosureKindwhere
__CTX: HashStableContext,
impl<__CTX> HashStable<__CTX> for ClosureKindwhere
__CTX: HashStableContext,
fn hash_stable(&self, __hcx: &mut __CTX, __hasher: &mut StableHasher)
source§impl PartialEq for ClosureKind
impl PartialEq for ClosureKind
source§fn eq(&self, other: &ClosureKind) -> bool
fn eq(&self, other: &ClosureKind) -> bool
self
and other
values to be equal, and is used
by ==
.impl Copy for ClosureKind
impl Eq for ClosureKind
impl StructuralPartialEq for ClosureKind
Auto Trait Implementations§
impl DynSend for ClosureKind
impl DynSync for ClosureKind
impl Freeze for ClosureKind
impl RefUnwindSafe for ClosureKind
impl Send for ClosureKind
impl Sync for ClosureKind
impl Unpin for ClosureKind
impl UnwindSafe for ClosureKind
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<'a>(self, arena: &'a Arena<'tcx>) -> &'a mut T
fn allocate_from_iter<'a>( arena: &'a Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'a 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§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.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: 2 bytes
Size for each variant:
Closure
: 0 bytesCoroutine
: 2 bytesCoroutineClosure
: 1 byte