[][src]Trait chalk_ir::interner::HasInterner

pub trait HasInterner {
    type Interner: Interner;
}

Implemented by types that have an associated interner (which are virtually all of the types in chalk-ir, for example). This lets us map from a type like Ty<I> to the parameter I.

It's particularly useful for writing Fold impls for generic types like Binder<T>, since it allows us to figure out the interner of T.

Associated Types

type Interner: Interner[src]

The interner associated with the type.

Loading content...

Implementations on Foreign Types

impl<T> HasInterner for Option<T> where
    T: HasInterner
[src]

type Interner = T::Interner

impl<T, E> HasInterner for Result<T, E> where
    T: HasInterner
[src]

type Interner = T::Interner

impl<T: HasInterner> HasInterner for [T][src]

type Interner = T::Interner

impl<T: HasInterner> HasInterner for Vec<T>[src]

type Interner = T::Interner

impl<T: HasInterner> HasInterner for Box<T>[src]

type Interner = T::Interner

impl<T: HasInterner> HasInterner for Arc<T>[src]

type Interner = T::Interner

impl<T: HasInterner + ?Sized, '_> HasInterner for &'_ T[src]

type Interner = T::Interner

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

type Interner = I

impl<A, B, I> HasInterner for (A, B) where
    A: HasInterner<Interner = I>,
    B: HasInterner<Interner = I>,
    I: Interner
[src]

type Interner = I

impl<A, B, C, I> HasInterner for (A, B, C) where
    A: HasInterner<Interner = I>,
    B: HasInterner<Interner = I>,
    C: HasInterner<Interner = I>,
    I: Interner
[src]

type Interner = I

impl<'a, T: HasInterner> HasInterner for Iter<'a, T>[src]

type Interner = T::Interner

Loading content...

Implementors

impl<G: HasInterner> HasInterner for InEnvironment<G>[src]

type Interner = G::Interner

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

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

type Interner = I

impl<I: Interner, T> HasInterner for WithKind<I, T>[src]

type Interner = I

impl<T: HasInterner> HasInterner for Binders<T>[src]

type Interner = T::Interner

impl<T: HasInterner> HasInterner for Canonical<T>[src]

type Interner = T::Interner

Loading content...