pub struct ConstArg<'hir> {
pub hir_id: HirId,
pub kind: ConstArgKind<'hir>,
pub is_desugared_from_effects: bool,
}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>§is_desugared_from_effects: boolIndicates whether this comes from a ~const desugaring.
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<'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<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: 40 bytes