[][src]Struct chalk_ir::Ty

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

Methods

impl<I: Interner> Ty<I>[src]

pub fn new(interner: &I, data: impl CastTo<TyData<I>>) -> Self[src]

pub fn interned(&self) -> &I::InternedType[src]

pub fn data(&self, interner: &I) -> &TyData<I>[src]

pub fn from_env(&self) -> FromEnv<I>[src]

pub fn well_formed(&self) -> WellFormed<I>[src]

pub fn into_from_env_goal(self, interner: &I) -> DomainGoal<I>[src]

Creates a domain goal FromEnv(T) where T is this type.

pub fn bound(&self, interner: &I) -> Option<BoundVar>[src]

If this is a TyData::BoundVar(d), returns Some(d) else None.

pub fn inference_var(&self, interner: &I) -> Option<InferenceVar>[src]

If this is a TyData::InferenceVar(d), returns Some(d) else None.

pub fn is_var(&self, interner: &I) -> bool[src]

Returns true if this is a BoundVar or InferenceVar.

pub fn is_alias(&self, interner: &I) -> bool[src]

pub fn needs_shift(&self, interner: &I) -> bool[src]

True if this type contains "bound" types/lifetimes, and hence needs to be shifted across binders. This is a very inefficient check, intended only for debug assertions, because I am lazy.

Trait Implementations

impl<I: Interner> CastTo<Parameter<I>> for Ty<I>[src]

impl<I: Clone + Interner> Clone for Ty<I> where
    I::InternedType: Clone
[src]

impl<I: Copy + Interner> Copy for Ty<I> where
    I::InternedType: Copy
[src]

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

impl<I: Eq + Interner> Eq for Ty<I> where
    I::InternedType: Eq
[src]

impl<I: Interner, TI: TargetInterner<I>> Fold<I, TI> for Ty<I>[src]

"Folding" a type invokes the fold_ty method on the folder; this usually (in turn) invokes super_fold_ty to fold the individual parts.

type Result = Ty<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

impl<I: Interner> HasInterner for Ty<I>[src]

type Interner = I

impl<I: Hash + Interner> Hash for Ty<I> where
    I::InternedType: Hash
[src]

impl<I: Ord + Interner> Ord for Ty<I> where
    I::InternedType: Ord
[src]

impl<I: PartialEq + Interner> PartialEq<Ty<I>> for Ty<I> where
    I::InternedType: PartialEq
[src]

impl<I: PartialOrd + Interner> PartialOrd<Ty<I>> for Ty<I> where
    I::InternedType: PartialOrd
[src]

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

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

impl<I, TI> SuperFold<I, TI> for Ty<I> where
    I: Interner,
    TI: TargetInterner<I>, 
[src]

"Super fold" for a type invokes te more detailed callbacks on the type

impl<I> SuperVisit<I> for Ty<I> where
    I: Interner
[src]

"Super visit" for a type invokes te more detailed callbacks on the type

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

"visiting" a type invokes the visit_ty method on the visitor; this usually (in turn) invokes super_visit_ty to visit the individual parts.

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

Auto Trait Implementations

impl<I> RefUnwindSafe for Ty<I> where
    <I as Interner>::InternedType: RefUnwindSafe

impl<I> Send for Ty<I> where
    <I as Interner>::InternedType: Send

impl<I> Sync for Ty<I> where
    <I as Interner>::InternedType: Sync

impl<I> Unpin for Ty<I> where
    <I as Interner>::InternedType: Unpin

impl<I> UnwindSafe for Ty<I> where
    <I as Interner>::InternedType: 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, 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]