[][src]Struct chalk_ir::Ty

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

A Rust type. The actual type data is stored in TyKind.

Implementations

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

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

Creates a type from TyKind.

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

Gets the interned type.

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

Gets the underlying type data.

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

Gets the underlying type kind.

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

Creates a FromEnv constraint using this type.

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

Creates a WF-constraint for this type.

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_var(&self, interner: &I) -> Option<BoundVar>[src]

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

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

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

pub fn is_general_var(
    &self,
    interner: &I,
    binders: &CanonicalVarKinds<I>
) -> bool
[src]

Returns true if this is a BoundVar or an InferenceVar of TyVariableKind::General.

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

Returns true if this is an Alias.

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

Returns true if this is an IntTy or UintTy.

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

Returns true if this is a FloatTy.

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

Returns Some(adt_id) if this is an ADT, None otherwise

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<GenericArg<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> Fold<I> 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<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 Ty<I>[src]

type Interner = I

The interner associated with the type.

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> SuperFold<I> for Ty<I> where
    I: Interner
[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 the 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>, 
[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]