Struct rustc_middle::ty::Const [−][src]
Expand description
Typed constant value.
Fields
ty: Ty<'tcx>val: ConstKind<'tcx>Implementations
impl<'tcx> Const<'tcx>[src]
impl<'tcx> Const<'tcx>[src]pub fn from_anon_const(tcx: TyCtxt<'tcx>, def_id: LocalDefId) -> &'tcx Self[src]
pub fn from_anon_const(tcx: TyCtxt<'tcx>, def_id: LocalDefId) -> &'tcx Self[src]Literals and const generic parameters are eagerly converted to a constant, everything else
becomes Unevaluated.
pub fn from_opt_const_arg_anon_const(
tcx: TyCtxt<'tcx>,
def: WithOptConstParam<LocalDefId>
) -> &'tcx Self[src]
tcx: TyCtxt<'tcx>,
def: WithOptConstParam<LocalDefId>
) -> &'tcx Self
pub fn from_value(
tcx: TyCtxt<'tcx>,
val: ConstValue<'tcx>,
ty: Ty<'tcx>
) -> &'tcx Self[src]
pub fn from_value(
tcx: TyCtxt<'tcx>,
val: ConstValue<'tcx>,
ty: Ty<'tcx>
) -> &'tcx Self[src]Interns the given value as a constant.
pub fn from_scalar(tcx: TyCtxt<'tcx>, val: Scalar, ty: Ty<'tcx>) -> &'tcx Self[src]
pub fn from_scalar(tcx: TyCtxt<'tcx>, val: Scalar, ty: Ty<'tcx>) -> &'tcx Self[src]Interns the given scalar as a constant.
pub fn from_bits(
tcx: TyCtxt<'tcx>,
bits: u128,
ty: ParamEnvAnd<'tcx, Ty<'tcx>>
) -> &'tcx Self[src]
pub fn from_bits(
tcx: TyCtxt<'tcx>,
bits: u128,
ty: ParamEnvAnd<'tcx, Ty<'tcx>>
) -> &'tcx Self[src]Creates a constant with the given integer value and interns it.
pub fn zero_sized(tcx: TyCtxt<'tcx>, ty: Ty<'tcx>) -> &'tcx Self[src]
pub fn zero_sized(tcx: TyCtxt<'tcx>, ty: Ty<'tcx>) -> &'tcx Self[src]Creates an interned zst constant.
pub fn from_usize(tcx: TyCtxt<'tcx>, n: u64) -> &'tcx Self[src]
pub fn from_usize(tcx: TyCtxt<'tcx>, n: u64) -> &'tcx Self[src]Creates an interned usize constant.
pub fn try_eval_bits(
&self,
tcx: TyCtxt<'tcx>,
param_env: ParamEnv<'tcx>,
ty: Ty<'tcx>
) -> Option<u128>[src]
pub fn try_eval_bits(
&self,
tcx: TyCtxt<'tcx>,
param_env: ParamEnv<'tcx>,
ty: Ty<'tcx>
) -> Option<u128>[src]Attempts to evaluate the given constant to bits. Can fail to evaluate in the presence of generics (or erroneous code) or if the value can’t be represented as bits (e.g. because it contains const generic parameters or pointers).
pub fn try_eval_bool(
&self,
tcx: TyCtxt<'tcx>,
param_env: ParamEnv<'tcx>
) -> Option<bool>[src]
&self,
tcx: TyCtxt<'tcx>,
param_env: ParamEnv<'tcx>
) -> Option<bool>
pub fn try_eval_usize(
&self,
tcx: TyCtxt<'tcx>,
param_env: ParamEnv<'tcx>
) -> Option<u64>[src]
&self,
tcx: TyCtxt<'tcx>,
param_env: ParamEnv<'tcx>
) -> Option<u64>
pub fn eval(&self, tcx: TyCtxt<'tcx>, param_env: ParamEnv<'tcx>) -> &Const<'tcx>[src]
pub fn eval(&self, tcx: TyCtxt<'tcx>, param_env: ParamEnv<'tcx>) -> &Const<'tcx>[src]Tries to evaluate the constant if it is Unevaluated. If that doesn’t succeed, return the
unevaluated constant.
pub fn eval_bits(
&self,
tcx: TyCtxt<'tcx>,
param_env: ParamEnv<'tcx>,
ty: Ty<'tcx>
) -> u128[src]
pub fn eval_bits(
&self,
tcx: TyCtxt<'tcx>,
param_env: ParamEnv<'tcx>,
ty: Ty<'tcx>
) -> u128[src]Panics if the value cannot be evaluated or doesn’t contain a valid integer of the given type.
pub fn eval_usize(&self, tcx: TyCtxt<'tcx>, param_env: ParamEnv<'tcx>) -> u64[src]
pub fn eval_usize(&self, tcx: TyCtxt<'tcx>, param_env: ParamEnv<'tcx>) -> u64[src]Panics if the value cannot be evaluated or doesn’t contain a valid usize.
Trait Implementations
impl<'tcx> From<&'tcx Const<'tcx>> for ConstantKind<'tcx>[src]
impl<'tcx> From<&'tcx Const<'tcx>> for ConstantKind<'tcx>[src]impl<'tcx> From<&'tcx Const<'tcx>> for GenericArg<'tcx>[src]
impl<'tcx> From<&'tcx Const<'tcx>> for GenericArg<'tcx>[src]fn from(c: &'tcx Const<'tcx>) -> GenericArg<'tcx>[src]
fn from(c: &'tcx Const<'tcx>) -> GenericArg<'tcx>[src]Performs the conversion.
impl<'tcx, '__ctx> HashStable<StableHashingContext<'__ctx>> for Const<'tcx>[src]
impl<'tcx, '__ctx> HashStable<StableHashingContext<'__ctx>> for Const<'tcx>[src]fn hash_stable(
&self,
__hcx: &mut StableHashingContext<'__ctx>,
__hasher: &mut StableHasher
)[src]
&self,
__hcx: &mut StableHashingContext<'__ctx>,
__hasher: &mut StableHasher
)
impl<'tcx> Ord for Const<'tcx>[src]
impl<'tcx> Ord for Const<'tcx>[src]impl<'tcx> PartialOrd<Const<'tcx>> for Const<'tcx>[src]
impl<'tcx> PartialOrd<Const<'tcx>> for Const<'tcx>[src]fn partial_cmp(&self, other: &Const<'tcx>) -> Option<Ordering>[src]
fn partial_cmp(&self, other: &Const<'tcx>) -> Option<Ordering>[src]This method returns an ordering between self and other values if one exists. Read more
#[must_use]fn lt(&self, other: &Rhs) -> bool1.0.0[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool1.0.0[src]This method tests less than (for self and other) and is used by the < operator. Read more
#[must_use]fn le(&self, other: &Rhs) -> bool1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool1.0.0[src]This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
impl<'tcx, D: TyDecoder<'tcx>> RefDecodable<'tcx, D> for Const<'tcx>[src]
impl<'tcx, D: TyDecoder<'tcx>> RefDecodable<'tcx, D> for Const<'tcx>[src]impl<'tcx> Relate<'tcx> for &'tcx Const<'tcx>[src]
impl<'tcx> Relate<'tcx> for &'tcx Const<'tcx>[src]fn relate<R: TypeRelation<'tcx>>(
relation: &mut R,
a: &'tcx Const<'tcx>,
b: &'tcx Const<'tcx>
) -> RelateResult<'tcx, &'tcx Const<'tcx>>[src]
relation: &mut R,
a: &'tcx Const<'tcx>,
b: &'tcx Const<'tcx>
) -> RelateResult<'tcx, &'tcx Const<'tcx>>
impl<'tcx> TypeFoldable<'tcx> for &'tcx Const<'tcx>[src]
impl<'tcx> TypeFoldable<'tcx> for &'tcx Const<'tcx>[src]fn super_fold_with<F: TypeFolder<'tcx>>(self, folder: &mut F) -> Self[src]
fn fold_with<F: TypeFolder<'tcx>>(self, folder: &mut F) -> Self[src]
fn super_visit_with<V: TypeVisitor<'tcx>>(
&self,
visitor: &mut V
) -> ControlFlow<V::BreakTy>[src]
&self,
visitor: &mut V
) -> ControlFlow<V::BreakTy>
fn visit_with<V: TypeVisitor<'tcx>>(
&self,
visitor: &mut V
) -> ControlFlow<V::BreakTy>[src]
&self,
visitor: &mut V
) -> ControlFlow<V::BreakTy>
fn has_vars_bound_at_or_above(&self, binder: DebruijnIndex) -> bool[src]
fn has_vars_bound_at_or_above(&self, binder: DebruijnIndex) -> bool[src]Returns true if self has any late-bound regions that are either
bound by binder or bound by some binder outside of binder.
If binder is ty::INNERMOST, this indicates whether
there are any late-bound regions that appear free. Read more
fn has_vars_bound_above(&self, binder: DebruijnIndex) -> bool[src]
fn has_vars_bound_above(&self, binder: DebruijnIndex) -> bool[src]Returns true if this self has any regions that escape binder (and
hence are not bound by it). Read more
fn has_escaping_bound_vars(&self) -> bool[src]
fn has_type_flags(&self, flags: TypeFlags) -> bool[src]
fn has_projections(&self) -> bool[src]
fn has_opaque_types(&self) -> bool[src]
fn references_error(&self) -> bool[src]
fn has_param_types_or_consts(&self) -> bool[src]
fn has_infer_regions(&self) -> bool[src]
fn has_infer_types(&self) -> bool[src]
fn has_infer_types_or_consts(&self) -> bool[src]
fn needs_infer(&self) -> bool[src]
fn has_placeholders(&self) -> bool[src]
fn needs_subst(&self) -> bool[src]
fn has_free_regions(&self) -> bool[src]
fn has_free_regions(&self) -> bool[src]“Free” regions in this context means that it has any region that is not (a) erased or (b) late-bound. Read more
fn has_erased_regions(&self) -> bool[src]
fn has_erasable_regions(&self) -> bool[src]
fn has_erasable_regions(&self) -> bool[src]True if there are any un-erased free regions.
fn is_global(&self) -> bool[src]
fn is_global(&self) -> bool[src]Indicates whether this value references only ‘global’ generic parameters that are the same regardless of what fn we are in. This is used for caching. Read more
fn has_late_bound_regions(&self) -> bool[src]
fn has_late_bound_regions(&self) -> bool[src]True if there are any late-bound regions
fn still_further_specializable(&self) -> bool[src]
fn still_further_specializable(&self) -> bool[src]Indicates whether this value still has parameters/placeholders/inference variables
which could be replaced later, in a way that would change the results of impl
specialization. Read more
impl<'tcx> Copy for Const<'tcx>[src]
impl<'tcx> Eq for Const<'tcx>[src]
impl<'tcx> EqUnifyValue for &'tcx Const<'tcx>[src]
impl<'tcx> StructuralEq for Const<'tcx>[src]
impl<'tcx> StructuralPartialEq for Const<'tcx>[src]
Auto Trait Implementations
impl<'tcx> !RefUnwindSafe for Const<'tcx>
impl<'tcx> !Send for Const<'tcx>
impl<'tcx> !Sync for Const<'tcx>
impl<'tcx> Unpin for Const<'tcx>
impl<'tcx> !UnwindSafe for Const<'tcx>
Blanket Implementations
impl<'tcx, T> ArenaAllocatable<'tcx, ()> for T where
T: Copy, [src]
impl<'tcx, T> ArenaAllocatable<'tcx, ()> for T where
T: Copy, [src]pub fn allocate_on(Self, &'a Arena<'tcx>) -> &'a mut T[src]
pub fn allocate_from_iter(
&'a Arena<'tcx>,
impl IntoIterator<Item = T>
) -> &'a mut [T]ⓘ[src]
&'a Arena<'tcx>,
impl IntoIterator<Item = T>
) -> &'a mut [T]ⓘ
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> MaybeResult<T> for T[src]
impl<T> MaybeResult<T> for T[src]impl<T> ToOwned for T where
T: Clone, [src]
impl<T> ToOwned for T where
T: Clone, [src]type Owned = T
type Owned = TThe resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn to_owned(&self) -> T[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)[src]
pub fn clone_into(&self, target: &mut T)[src]🔬 This is a nightly-only experimental API. (toowned_clone_into)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<T> WithConstness for T[src]
impl<T> WithConstness for T[src]fn with_constness(self, constness: Constness) -> ConstnessAnd<Self>[src]
fn with_const(self) -> ConstnessAnd<Self>[src]
fn without_const(self) -> ConstnessAnd<Self>[src]
impl<'a, T> Captures<'a> for T where
T: ?Sized, [src]
T: ?Sized,