pub struct ConstArg<'hir> {
pub hir_id: HirId,
pub kind: ConstArgKind<'hir>,
}
Expand description
A constant that enters the type system, used for arguments to const generics (e.g. array lengths).
These are distinct from AnonConst
as anon consts in the type system are not allowed
to use any generic parameters, therefore we must represent N
differently. Additionally
future designs for supporting generic parameters in const arguments will likely not use
an anon const based design.
So, ConstArg
(specifically, ConstArgKind
) distinguishes between const args
that are just paths (currently just bare const params)
versus const args that are literals or have arbitrary computations (e.g., { 1 + 3 }
).
Fields§
§hir_id: HirId
§kind: ConstArgKind<'hir>
Implementations§
Trait Implementations§
Source§impl<'hir, __CTX> HashStable<__CTX> for ConstArg<'hir>where
__CTX: HashStableContext,
impl<'hir, __CTX> HashStable<__CTX> for ConstArg<'hir>where
__CTX: HashStableContext,
fn hash_stable(&self, __hcx: &mut __CTX, __hasher: &mut StableHasher)
impl<'hir> Copy for ConstArg<'hir>
Auto Trait Implementations§
impl<'hir> DynSend for ConstArg<'hir>
impl<'hir> DynSync for ConstArg<'hir>
impl<'hir> Freeze for ConstArg<'hir>
impl<'hir> RefUnwindSafe for ConstArg<'hir>
impl<'hir> Send for ConstArg<'hir>
impl<'hir> Sync for ConstArg<'hir>
impl<'hir> Unpin for ConstArg<'hir>
impl<'hir> UnwindSafe for ConstArg<'hir>
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<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: 32 bytes