Enum rustc_middle::ty::ty_kind::TyKind
source · pub enum TyKind<I>where
I: Interner,{
Show 27 variants
Bool,
Char,
Int(IntTy),
Uint(UintTy),
Float(FloatTy),
Adt(<I as Interner>::AdtDef, <I as Interner>::GenericArgs),
Foreign(<I as Interner>::DefId),
Str,
Array(<I as Interner>::Ty, <I as Interner>::Const),
Slice(<I as Interner>::Ty),
RawPtr(TypeAndMut<I>),
Ref(<I as Interner>::Region, <I as Interner>::Ty, Mutability),
FnDef(<I as Interner>::DefId, <I as Interner>::GenericArgs),
FnPtr(<I as Interner>::PolyFnSig),
Dynamic(<I as Interner>::BoundExistentialPredicates, <I as Interner>::Region, DynKind),
Closure(<I as Interner>::DefId, <I as Interner>::GenericArgs),
CoroutineClosure(<I as Interner>::DefId, <I as Interner>::GenericArgs),
Coroutine(<I as Interner>::DefId, <I as Interner>::GenericArgs),
CoroutineWitness(<I as Interner>::DefId, <I as Interner>::GenericArgs),
Never,
Tuple(<I as Interner>::Tys),
Alias(AliasKind, <I as Interner>::AliasTy),
Param(<I as Interner>::ParamTy),
Bound(DebruijnIndex, <I as Interner>::BoundTy),
Placeholder(<I as Interner>::PlaceholderTy),
Infer(InferTy),
Error(<I as Interner>::ErrorGuaranteed),
}
Expand description
Defines the kinds of types used by the type system.
Types written by the user start out as hir::TyKind
and get
converted to this representation using AstConv::ast_ty_to_ty
.
Variants§
Bool
The primitive boolean type. Written as bool
.
Char
The primitive character type; holds a Unicode scalar value
(a non-surrogate code point). Written as char
.
Int(IntTy)
A primitive signed integer type. For example, i32
.
Uint(UintTy)
A primitive unsigned integer type. For example, u32
.
Float(FloatTy)
A primitive floating-point type. For example, f64
.
Adt(<I as Interner>::AdtDef, <I as Interner>::GenericArgs)
Algebraic data types (ADT). For example: structures, enumerations and unions.
For example, the type List<i32>
would be represented using the AdtDef
for struct List<T>
and the args [i32]
.
Note that generic parameters in fields only get lazily instantiated
by using something like adt_def.all_fields().map(|field| field.ty(tcx, args))
.
Foreign(<I as Interner>::DefId)
An unsized FFI type that is opaque to Rust. Written as extern type T
.
Str
The pointee of a string slice. Written as str
.
Array(<I as Interner>::Ty, <I as Interner>::Const)
An array with the given length. Written as [T; N]
.
Slice(<I as Interner>::Ty)
The pointee of an array slice. Written as [T]
.
RawPtr(TypeAndMut<I>)
A raw pointer. Written as *mut T
or *const T
Ref(<I as Interner>::Region, <I as Interner>::Ty, Mutability)
A reference; a pointer with an associated lifetime. Written as
&'a mut T
or &'a T
.
FnDef(<I as Interner>::DefId, <I as Interner>::GenericArgs)
The anonymous type of a function declaration/definition. Each function has a unique type.
For the function fn foo() -> i32 { 3 }
this type would be
shown to the user as fn() -> i32 {foo}
.
For example the type of bar
here:
fn foo() -> i32 { 1 }
let bar = foo; // bar: fn() -> i32 {foo}
FnPtr(<I as Interner>::PolyFnSig)
A pointer to a function. Written as fn() -> i32
.
Note that both functions and closures start out as either FnDef or Closure which can be then be coerced to this variant.
For example the type of bar
here:
fn foo() -> i32 { 1 }
let bar: fn() -> i32 = foo;
Dynamic(<I as Interner>::BoundExistentialPredicates, <I as Interner>::Region, DynKind)
A trait object. Written as dyn for<'b> Trait<'b, Assoc = u32> + Send + 'a
.
Closure(<I as Interner>::DefId, <I as Interner>::GenericArgs)
The anonymous type of a closure. Used to represent the type of |a| a
.
Closure args contain both the - potentially instantiated - generic parameters
of its parent and some synthetic parameters. See the documentation for
ClosureArgs
for more details.
CoroutineClosure(<I as Interner>::DefId, <I as Interner>::GenericArgs)
The anonymous type of a closure. Used to represent the type of async |a| a
.
Coroutine-closure args contain both the - potentially instantiated - generic
parameters of its parent and some synthetic parameters. See the documentation
for CoroutineClosureArgs
for more details.
Coroutine(<I as Interner>::DefId, <I as Interner>::GenericArgs)
The anonymous type of a coroutine. Used to represent the type of
|a| yield a
.
For more info about coroutine args, visit the documentation for
CoroutineArgs
.
CoroutineWitness(<I as Interner>::DefId, <I as Interner>::GenericArgs)
A type representing the types stored inside a coroutine.
This should only appear as part of the CoroutineArgs
.
Unlike upvars, the witness can reference lifetimes from inside of the coroutine itself. To deal with them in the type of the coroutine, we convert them to higher ranked lifetimes bound by the witness itself.
This contains the DefId
and the GenericArgsRef
of the coroutine.
The actual witness types are computed on MIR by the mir_coroutine_witnesses
query.
Looking at the following example, the witness for this coroutine
may end up as something like for<'a> [Vec<i32>, &'a Vec<i32>]
:
#![feature(coroutines)]
|a| {
let x = &vec![3];
yield a;
yield x[0];
}
Never
The never type !
.
Tuple(<I as Interner>::Tys)
A tuple type. For example, (i32, bool)
.
Alias(AliasKind, <I as Interner>::AliasTy)
A projection, opaque type, weak type alias, or inherent associated type. All of these types are represented as pairs of def-id and args, and can be normalized, so they are grouped conceptually.
Param(<I as Interner>::ParamTy)
A type parameter; for example, T
in fn f<T>(x: T) {}
.
Bound(DebruijnIndex, <I as Interner>::BoundTy)
Bound type variable, used to represent the 'a
in for<'a> fn(&'a ())
.
For canonical queries, we replace inference variables with bound variables,
so e.g. when checking whether &'_ (): Trait<_>
holds, we canonicalize that to
for<'a, T> &'a (): Trait<T>
and then convert the introduced bound variables
back to inference variables in a new inference context when inside of the query.
It is conventional to render anonymous bound types like ^N
or ^D_N
,
where N
is the bound variable’s anonymous index into the binder, and
D
is the debruijn index, or totally omitted if the debruijn index is zero.
See the rustc-dev-guide
for more details about
higher-ranked trait bounds and canonical queries.
Placeholder(<I as Interner>::PlaceholderTy)
A placeholder type, used during higher ranked subtyping to instantiate bound variables.
It is conventional to render anonymous placeholer types like !N
or !U_N
,
where N
is the placeholder variable’s anonymous index (which corresponds
to the bound variable’s index from the binder from which it was instantiated),
and U
is the universe index in which it is instantiated, or totally omitted
if the universe index is zero.
Infer(InferTy)
A type variable used during type checking.
Similar to placeholders, inference variables also live in a universe to
correctly deal with higher ranked types. Though unlike placeholders,
that universe is stored in the InferCtxt
instead of directly
inside of the type.
Error(<I as Interner>::ErrorGuaranteed)
A placeholder for a type which could not be computed; this is propagated to avoid useless error messages.
Implementations§
Trait Implementations§
source§impl<I> DebugWithInfcx<I> for TyKind<I>where
I: Interner,
impl<I> DebugWithInfcx<I> for TyKind<I>where
I: Interner,
source§impl<I, __D> Decodable<__D> for TyKind<I>where
I: Interner,
__D: TyDecoder<I = I>,
<I as Interner>::AdtDef: Decodable<__D>,
<I as Interner>::GenericArgs: Decodable<__D>,
<I as Interner>::DefId: Decodable<__D>,
<I as Interner>::Ty: Decodable<__D>,
<I as Interner>::Const: Decodable<__D>,
TypeAndMut<I>: Decodable<__D>,
<I as Interner>::Region: Decodable<__D>,
<I as Interner>::PolyFnSig: Decodable<__D>,
<I as Interner>::BoundExistentialPredicates: Decodable<__D>,
<I as Interner>::Tys: Decodable<__D>,
<I as Interner>::AliasTy: Decodable<__D>,
<I as Interner>::ParamTy: Decodable<__D>,
<I as Interner>::BoundTy: Decodable<__D>,
<I as Interner>::PlaceholderTy: Decodable<__D>,
<I as Interner>::ErrorGuaranteed: Decodable<__D>,
impl<I, __D> Decodable<__D> for TyKind<I>where
I: Interner,
__D: TyDecoder<I = I>,
<I as Interner>::AdtDef: Decodable<__D>,
<I as Interner>::GenericArgs: Decodable<__D>,
<I as Interner>::DefId: Decodable<__D>,
<I as Interner>::Ty: Decodable<__D>,
<I as Interner>::Const: Decodable<__D>,
TypeAndMut<I>: Decodable<__D>,
<I as Interner>::Region: Decodable<__D>,
<I as Interner>::PolyFnSig: Decodable<__D>,
<I as Interner>::BoundExistentialPredicates: Decodable<__D>,
<I as Interner>::Tys: Decodable<__D>,
<I as Interner>::AliasTy: Decodable<__D>,
<I as Interner>::ParamTy: Decodable<__D>,
<I as Interner>::BoundTy: Decodable<__D>,
<I as Interner>::PlaceholderTy: Decodable<__D>,
<I as Interner>::ErrorGuaranteed: Decodable<__D>,
source§impl<I, __E> Encodable<__E> for TyKind<I>where
I: Interner,
__E: TyEncoder<I = I>,
<I as Interner>::AdtDef: Encodable<__E>,
<I as Interner>::GenericArgs: Encodable<__E>,
<I as Interner>::DefId: Encodable<__E>,
<I as Interner>::Ty: Encodable<__E>,
<I as Interner>::Const: Encodable<__E>,
TypeAndMut<I>: Encodable<__E>,
<I as Interner>::Region: Encodable<__E>,
<I as Interner>::PolyFnSig: Encodable<__E>,
<I as Interner>::BoundExistentialPredicates: Encodable<__E>,
<I as Interner>::Tys: Encodable<__E>,
<I as Interner>::AliasTy: Encodable<__E>,
<I as Interner>::ParamTy: Encodable<__E>,
<I as Interner>::BoundTy: Encodable<__E>,
<I as Interner>::PlaceholderTy: Encodable<__E>,
<I as Interner>::ErrorGuaranteed: Encodable<__E>,
impl<I, __E> Encodable<__E> for TyKind<I>where
I: Interner,
__E: TyEncoder<I = I>,
<I as Interner>::AdtDef: Encodable<__E>,
<I as Interner>::GenericArgs: Encodable<__E>,
<I as Interner>::DefId: Encodable<__E>,
<I as Interner>::Ty: Encodable<__E>,
<I as Interner>::Const: Encodable<__E>,
TypeAndMut<I>: Encodable<__E>,
<I as Interner>::Region: Encodable<__E>,
<I as Interner>::PolyFnSig: Encodable<__E>,
<I as Interner>::BoundExistentialPredicates: Encodable<__E>,
<I as Interner>::Tys: Encodable<__E>,
<I as Interner>::AliasTy: Encodable<__E>,
<I as Interner>::ParamTy: Encodable<__E>,
<I as Interner>::BoundTy: Encodable<__E>,
<I as Interner>::PlaceholderTy: Encodable<__E>,
<I as Interner>::ErrorGuaranteed: Encodable<__E>,
source§impl<I, __CTX> HashStable<__CTX> for TyKind<I>where
I: Interner,
<I as Interner>::AdtDef: HashStable<__CTX>,
<I as Interner>::GenericArgs: HashStable<__CTX>,
<I as Interner>::DefId: HashStable<__CTX>,
<I as Interner>::Ty: HashStable<__CTX>,
<I as Interner>::Const: HashStable<__CTX>,
TypeAndMut<I>: HashStable<__CTX>,
<I as Interner>::Region: HashStable<__CTX>,
<I as Interner>::PolyFnSig: HashStable<__CTX>,
<I as Interner>::BoundExistentialPredicates: HashStable<__CTX>,
<I as Interner>::Tys: HashStable<__CTX>,
<I as Interner>::AliasTy: HashStable<__CTX>,
<I as Interner>::ParamTy: HashStable<__CTX>,
<I as Interner>::BoundTy: HashStable<__CTX>,
<I as Interner>::PlaceholderTy: HashStable<__CTX>,
<I as Interner>::ErrorGuaranteed: HashStable<__CTX>,
impl<I, __CTX> HashStable<__CTX> for TyKind<I>where
I: Interner,
<I as Interner>::AdtDef: HashStable<__CTX>,
<I as Interner>::GenericArgs: HashStable<__CTX>,
<I as Interner>::DefId: HashStable<__CTX>,
<I as Interner>::Ty: HashStable<__CTX>,
<I as Interner>::Const: HashStable<__CTX>,
TypeAndMut<I>: HashStable<__CTX>,
<I as Interner>::Region: HashStable<__CTX>,
<I as Interner>::PolyFnSig: HashStable<__CTX>,
<I as Interner>::BoundExistentialPredicates: HashStable<__CTX>,
<I as Interner>::Tys: HashStable<__CTX>,
<I as Interner>::AliasTy: HashStable<__CTX>,
<I as Interner>::ParamTy: HashStable<__CTX>,
<I as Interner>::BoundTy: HashStable<__CTX>,
<I as Interner>::PlaceholderTy: HashStable<__CTX>,
<I as Interner>::ErrorGuaranteed: HashStable<__CTX>,
fn hash_stable(&self, __hcx: &mut __CTX, __hasher: &mut StableHasher)
source§impl<I> Ord for TyKind<I>where
I: Interner,
impl<I> Ord for TyKind<I>where
I: Interner,
source§impl<I> PartialEq for TyKind<I>where
I: Interner,
impl<I> PartialEq for TyKind<I>where
I: Interner,
source§impl<I> PartialOrd for TyKind<I>where
I: Interner,
impl<I> PartialOrd for TyKind<I>where
I: Interner,
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moreimpl<I> Copy for TyKind<I>where
I: Interner,
impl<I> Eq for TyKind<I>where
I: Interner,
Auto Trait Implementations§
impl<I> DynSend for TyKind<I>where
<I as Interner>::AdtDef: DynSend,
<I as Interner>::AliasTy: DynSend,
<I as Interner>::BoundExistentialPredicates: DynSend,
<I as Interner>::BoundTy: DynSend,
<I as Interner>::Const: DynSend,
<I as Interner>::DefId: DynSend,
<I as Interner>::ErrorGuaranteed: DynSend,
<I as Interner>::GenericArgs: DynSend,
<I as Interner>::ParamTy: DynSend,
<I as Interner>::PlaceholderTy: DynSend,
<I as Interner>::PolyFnSig: DynSend,
<I as Interner>::Region: DynSend,
<I as Interner>::Ty: DynSend,
<I as Interner>::Tys: DynSend,
impl<I> DynSync for TyKind<I>where
<I as Interner>::AdtDef: DynSync,
<I as Interner>::AliasTy: DynSync,
<I as Interner>::BoundExistentialPredicates: DynSync,
<I as Interner>::BoundTy: DynSync,
<I as Interner>::Const: DynSync,
<I as Interner>::DefId: DynSync,
<I as Interner>::ErrorGuaranteed: DynSync,
<I as Interner>::GenericArgs: DynSync,
<I as Interner>::ParamTy: DynSync,
<I as Interner>::PlaceholderTy: DynSync,
<I as Interner>::PolyFnSig: DynSync,
<I as Interner>::Region: DynSync,
<I as Interner>::Ty: DynSync,
<I as Interner>::Tys: DynSync,
impl<I> Freeze for TyKind<I>where
<I as Interner>::AdtDef: Freeze,
<I as Interner>::AliasTy: Freeze,
<I as Interner>::BoundExistentialPredicates: Freeze,
<I as Interner>::BoundTy: Freeze,
<I as Interner>::Const: Freeze,
<I as Interner>::DefId: Freeze,
<I as Interner>::ErrorGuaranteed: Freeze,
<I as Interner>::GenericArgs: Freeze,
<I as Interner>::ParamTy: Freeze,
<I as Interner>::PlaceholderTy: Freeze,
<I as Interner>::PolyFnSig: Freeze,
<I as Interner>::Region: Freeze,
<I as Interner>::Ty: Freeze,
<I as Interner>::Tys: Freeze,
impl<I> RefUnwindSafe for TyKind<I>where
<I as Interner>::AdtDef: RefUnwindSafe,
<I as Interner>::AliasTy: RefUnwindSafe,
<I as Interner>::BoundExistentialPredicates: RefUnwindSafe,
<I as Interner>::BoundTy: RefUnwindSafe,
<I as Interner>::Const: RefUnwindSafe,
<I as Interner>::DefId: RefUnwindSafe,
<I as Interner>::ErrorGuaranteed: RefUnwindSafe,
<I as Interner>::GenericArgs: RefUnwindSafe,
<I as Interner>::ParamTy: RefUnwindSafe,
<I as Interner>::PlaceholderTy: RefUnwindSafe,
<I as Interner>::PolyFnSig: RefUnwindSafe,
<I as Interner>::Region: RefUnwindSafe,
<I as Interner>::Ty: RefUnwindSafe,
<I as Interner>::Tys: RefUnwindSafe,
impl<I> Send for TyKind<I>where
<I as Interner>::AdtDef: Send,
<I as Interner>::AliasTy: Send,
<I as Interner>::BoundExistentialPredicates: Send,
<I as Interner>::BoundTy: Send,
<I as Interner>::Const: Send,
<I as Interner>::DefId: Send,
<I as Interner>::ErrorGuaranteed: Send,
<I as Interner>::GenericArgs: Send,
<I as Interner>::ParamTy: Send,
<I as Interner>::PlaceholderTy: Send,
<I as Interner>::PolyFnSig: Send,
<I as Interner>::Region: Send,
<I as Interner>::Ty: Send,
<I as Interner>::Tys: Send,
impl<I> Sync for TyKind<I>where
<I as Interner>::AdtDef: Sync,
<I as Interner>::AliasTy: Sync,
<I as Interner>::BoundExistentialPredicates: Sync,
<I as Interner>::BoundTy: Sync,
<I as Interner>::Const: Sync,
<I as Interner>::DefId: Sync,
<I as Interner>::ErrorGuaranteed: Sync,
<I as Interner>::GenericArgs: Sync,
<I as Interner>::ParamTy: Sync,
<I as Interner>::PlaceholderTy: Sync,
<I as Interner>::PolyFnSig: Sync,
<I as Interner>::Region: Sync,
<I as Interner>::Ty: Sync,
<I as Interner>::Tys: Sync,
impl<I> Unpin for TyKind<I>where
<I as Interner>::AdtDef: Unpin,
<I as Interner>::AliasTy: Unpin,
<I as Interner>::BoundExistentialPredicates: Unpin,
<I as Interner>::BoundTy: Unpin,
<I as Interner>::Const: Unpin,
<I as Interner>::DefId: Unpin,
<I as Interner>::ErrorGuaranteed: Unpin,
<I as Interner>::GenericArgs: Unpin,
<I as Interner>::ParamTy: Unpin,
<I as Interner>::PlaceholderTy: Unpin,
<I as Interner>::PolyFnSig: Unpin,
<I as Interner>::Region: Unpin,
<I as Interner>::Ty: Unpin,
<I as Interner>::Tys: Unpin,
impl<I> UnwindSafe for TyKind<I>where
<I as Interner>::AdtDef: UnwindSafe,
<I as Interner>::AliasTy: UnwindSafe,
<I as Interner>::BoundExistentialPredicates: UnwindSafe,
<I as Interner>::BoundTy: UnwindSafe,
<I as Interner>::Const: UnwindSafe,
<I as Interner>::DefId: UnwindSafe,
<I as Interner>::ErrorGuaranteed: UnwindSafe,
<I as Interner>::GenericArgs: UnwindSafe,
<I as Interner>::ParamTy: UnwindSafe,
<I as Interner>::PlaceholderTy: UnwindSafe,
<I as Interner>::PolyFnSig: UnwindSafe,
<I as Interner>::Region: UnwindSafe,
<I as Interner>::Ty: UnwindSafe,
<I as Interner>::Tys: UnwindSafe,
Blanket Implementations§
§impl<T> AnyEq for T
impl<T> AnyEq for 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<'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<'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, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
source§impl<Tcx, T> DepNodeParams<Tcx> for T
impl<Tcx, T> DepNodeParams<Tcx> for T
default fn fingerprint_style() -> FingerprintStyle
source§default fn to_fingerprint(&self, tcx: Tcx) -> Fingerprint
default fn to_fingerprint(&self, tcx: Tcx) -> Fingerprint
default fn to_debug_str(&self, _: Tcx) -> String
source§default fn recover(_: Tcx, _: &DepNode) -> Option<T>
default fn recover(_: Tcx, _: &DepNode) -> Option<T>
DepNode
,
something which is needed when forcing DepNode
s during red-green
evaluation. The query system will only call this method if
fingerprint_style()
is not FingerprintStyle::Opaque
.
It is always valid to return None
here, in which case incremental
compilation will treat the query as having changed instead of forcing it.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§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
§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
key
and return true
if they are equal.§impl<T> Filterable for T
impl<T> Filterable 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<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
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> 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<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeSendSync for T
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.