[][src]Struct chalk_ir::Const

pub struct Const<I: Interner> { /* fields omitted */ }

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]

impl<I: Clone + Interner> Clone for Const<I> where
    I::InternedConst: Clone
[src]

impl<I: Copy + Interner> Copy for Const<I> where
    I::InternedConst: Copy
[src]

impl<I: Interner> Debug for Const<I>[src]

impl<I: Eq + Interner> Eq for Const<I> where
    I::InternedConst: Eq
[src]

impl<I: Interner> Fold<I> 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<I>

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

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]

impl<I: Ord + Interner> Ord for Const<I> where
    I::InternedConst: Ord
[src]

impl<I: PartialEq + Interner> PartialEq<Const<I>> for Const<I> where
    I::InternedConst: PartialEq
[src]

impl<I: PartialOrd + Interner> PartialOrd<Const<I>> for Const<I> where
    I::InternedConst: PartialOrd
[src]

impl<I: Interner> StructuralEq for Const<I>[src]

impl<I: Interner> StructuralPartialEq for Const<I>[src]

impl<I> SuperFold<I> for Const<I> where
    I: Interner
[src]

impl<I: Interner> SuperVisit<I> for Const<I>[src]

impl<I: Interner> Visit<I> for Const<I>[src]

impl<I: Interner> Zip<I> for Const<I>[src]

Auto Trait Implementations

impl<I> RefUnwindSafe for Const<I> where
    <I as Interner>::InternedConst: RefUnwindSafe

impl<I> Send for Const<I> where
    <I as Interner>::InternedConst: Send

impl<I> Sync for Const<I> where
    <I as Interner>::InternedConst: Sync

impl<I> Unpin for Const<I> where
    <I as Interner>::InternedConst: Unpin

impl<I> UnwindSafe for Const<I> where
    <I as Interner>::InternedConst: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Cast for T[src]

impl<T, I> CouldMatch<T> for T where
    I: Interner,
    T: Zip<I> + HasInterner<Interner = I> + ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, I> Shift<I> for T where
    I: Interner,
    T: Fold<I>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T, I> VisitExt<I> for T where
    I: Interner,
    T: Visit<I>, 
[src]