[−][src]Struct chalk_ir::Const
Constants.
Implementations
impl<I: Interner> Const<I>[src]
pub fn new(interner: &I, data: impl CastTo<ConstData<I>>) -> Self[src]
Create a Const using something that can be cast to const data.
pub fn interned(&self) -> &I::InternedConst[src]
Gets the interned constant.
pub fn data(&self, interner: &I) -> &ConstData<I>[src]
Gets the constant data from the interner.
pub fn bound_var(&self, interner: &I) -> Option<BoundVar>[src]
If this is a ConstData::BoundVar(d), returns Some(d) else None.
pub fn inference_var(&self, interner: &I) -> Option<InferenceVar>[src]
If this is a ConstData::InferenceVar(d), returns Some(d) else None.
pub fn needs_shift(&self, interner: &I) -> bool[src]
True if this const is a "bound" const, and hence needs to be shifted across binders. Meant for debug assertions.
Trait Implementations
impl<I: Interner> CastTo<GenericArg<I>> for Const<I>[src]
fn cast_to(self, interner: &I) -> GenericArg<I>[src]
impl<I: Clone + Interner> Clone for Const<I> where
I::InternedConst: Clone, [src]
I::InternedConst: Clone,
impl<I: Copy + Interner> Copy for Const<I> where
I::InternedConst: Copy, [src]
I::InternedConst: Copy,
impl<I: Interner> Debug for Const<I>[src]
impl<I: Eq + Interner> Eq for Const<I> where
I::InternedConst: Eq, [src]
I::InternedConst: Eq,
impl<I: Interner, TI: TargetInterner<I>> Fold<I, TI> for Const<I>[src]
"Folding" a const invokes the fold_const method on the folder; this
usually (in turn) invokes super_fold_const to fold the individual
parts.
type Result = Const<TI>
The type of value that will be produced once folding is done. Typically this is Self, unless Self contains borrowed values, in which case owned values are produced (for example, one can fold over a &T value where T: Fold, in which case you get back a T, not a &T). Read more
fn fold_with<'i>(
&self,
folder: &mut dyn Folder<'i, I, TI>,
outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
I: 'i,
TI: 'i, [src]
&self,
folder: &mut dyn Folder<'i, I, TI>,
outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
I: 'i,
TI: 'i,
impl<I: Interner> HasInterner for Const<I>[src]
type Interner = I
The interner associated with the type.
impl<I: Hash + Interner> Hash for Const<I> where
I::InternedConst: Hash, [src]
I::InternedConst: Hash,
fn hash<__H: Hasher>(&self, state: &mut __H)[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher, 1.3.0[src]
H: Hasher,
impl<I: Ord + Interner> Ord for Const<I> where
I::InternedConst: Ord, [src]
I::InternedConst: Ord,
fn cmp(&self, other: &Const<I>) -> Ordering[src]
#[must_use]fn max(self, other: Self) -> Self1.21.0[src]
#[must_use]fn min(self, other: Self) -> Self1.21.0[src]
#[must_use]fn clamp(self, min: Self, max: Self) -> Self[src]
impl<I: PartialEq + Interner> PartialEq<Const<I>> for Const<I> where
I::InternedConst: PartialEq, [src]
I::InternedConst: PartialEq,
impl<I: PartialOrd + Interner> PartialOrd<Const<I>> for Const<I> where
I::InternedConst: PartialOrd, [src]
I::InternedConst: PartialOrd,
fn partial_cmp(&self, other: &Const<I>) -> Option<Ordering>[src]
fn lt(&self, other: &Const<I>) -> bool[src]
fn le(&self, other: &Const<I>) -> bool[src]
fn gt(&self, other: &Const<I>) -> bool[src]
fn ge(&self, other: &Const<I>) -> bool[src]
impl<I: Interner> StructuralEq for Const<I>[src]
impl<I: Interner> StructuralPartialEq for Const<I>[src]
impl<I, TI> SuperFold<I, TI> for Const<I> where
I: Interner,
TI: TargetInterner<I>, [src]
I: Interner,
TI: TargetInterner<I>,
fn super_fold_with<'i>(
&self,
folder: &mut dyn Folder<'i, I, TI>,
outer_binder: DebruijnIndex
) -> Fallible<Const<TI>> where
I: 'i,
TI: 'i, [src]
&self,
folder: &mut dyn Folder<'i, I, TI>,
outer_binder: DebruijnIndex
) -> Fallible<Const<TI>> where
I: 'i,
TI: 'i,
impl<I: Interner> SuperVisit<I> for Const<I>[src]
fn super_visit_with<'i, R: VisitResult>(
&self,
visitor: &mut dyn Visitor<'i, I, Result = R>,
outer_binder: DebruijnIndex
) -> R where
I: 'i, [src]
&self,
visitor: &mut dyn Visitor<'i, I, Result = R>,
outer_binder: DebruijnIndex
) -> R where
I: 'i,
impl<I: Interner> Visit<I> for Const<I>[src]
fn visit_with<'i, R: VisitResult>(
&self,
visitor: &mut dyn Visitor<'i, I, Result = R>,
outer_binder: DebruijnIndex
) -> R where
I: 'i, [src]
&self,
visitor: &mut dyn Visitor<'i, I, Result = R>,
outer_binder: DebruijnIndex
) -> R where
I: 'i,
impl<I: Interner> Zip<I> for Const<I>[src]
Auto Trait Implementations
impl<I> RefUnwindSafe for Const<I> where
<I as Interner>::InternedConst: RefUnwindSafe,
<I as Interner>::InternedConst: RefUnwindSafe,
impl<I> Send for Const<I> where
<I as Interner>::InternedConst: Send,
<I as Interner>::InternedConst: Send,
impl<I> Sync for Const<I> where
<I as Interner>::InternedConst: Sync,
<I as Interner>::InternedConst: Sync,
impl<I> Unpin for Const<I> where
<I as Interner>::InternedConst: Unpin,
<I as Interner>::InternedConst: Unpin,
impl<I> UnwindSafe for Const<I> where
<I as Interner>::InternedConst: UnwindSafe,
<I as Interner>::InternedConst: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T[src]
impl<T> Cast for T[src]
fn cast<U>(self, interner: &U::Interner) -> U where
Self: CastTo<U>,
U: HasInterner, [src]
Self: CastTo<U>,
U: HasInterner,
impl<T, I> CouldMatch<T> for T where
I: Interner,
T: Zip<I> + HasInterner<Interner = I> + ?Sized, [src]
I: Interner,
T: Zip<I> + HasInterner<Interner = I> + ?Sized,
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T, I> Shift<I> for T where
I: Interner,
T: Fold<I, I>, [src]
I: Interner,
T: Fold<I, I>,
fn shifted_in(&Self, &I) -> <T as Fold<I, I>>::Result[src]
fn shifted_in_from(&Self, &I, DebruijnIndex) -> <T as Fold<I, I>>::Result[src]
fn shifted_out_to(
&Self,
&I,
DebruijnIndex
) -> Result<<T as Fold<I, I>>::Result, NoSolution>[src]
&Self,
&I,
DebruijnIndex
) -> Result<<T as Fold<I, I>>::Result, NoSolution>
fn shifted_out(&Self, &I) -> Result<<T as Fold<I, I>>::Result, NoSolution>[src]
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T[src]
fn clone_into(&self, target: &mut T)[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<T, I> VisitExt<I> for T where
I: Interner,
T: Visit<I>, [src]
I: Interner,
T: Visit<I>,