pub trait HasInterner {
    type Interner: Interner;
}
Expand description

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 TypeFoldable impls for generic types like Binder<T>, since it allows us to figure out the interner of T.

Required Associated Types§

source

type Interner: Interner

The interner associated with the type.

Implementations on Foreign Types§

source§

impl<'a, T: HasInterner> HasInterner for Iter<'a, T>

source§

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,

§

type Interner = I

source§

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

§

type Interner = I

source§

impl<I: Interner> HasInterner for PhantomData<I>

§

type Interner = I

source§

impl<T> HasInterner for Option<T>
where T: HasInterner,

source§

impl<T, E> HasInterner for Result<T, E>
where T: HasInterner,

source§

impl<T: HasInterner + ?Sized> HasInterner for &T

source§

impl<T: HasInterner + ?Sized> HasInterner for Box<T>

source§

impl<T: HasInterner + ?Sized> HasInterner for Arc<T>

source§

impl<T: HasInterner> HasInterner for [T]

source§

impl<T: HasInterner> HasInterner for Vec<T>

Implementors§

source§

impl<G: HasInterner> HasInterner for InEnvironment<G>

source§

impl<I: Interner> HasInterner for AliasTy<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for ConstValue<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for Constraint<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for DomainGoal<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for FromEnv<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for GoalData<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for LifetimeData<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for TyKind<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for VariableKind<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for WellFormed<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for WhereClause<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for AliasEq<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for AnswerSubst<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for CanonicalVarKinds<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for ConcreteConst<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for Const<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for ConstData<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for ConstrainedSubst<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for Constraints<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for DynTy<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for Environment<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for FnPointer<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for FnSig<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for FnSubst<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for GenericArg<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for Goal<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for Goals<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for Lifetime<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for LifetimeOutlives<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for OpaqueTy<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for ProgramClause<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for ProgramClauseData<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for ProgramClauseImplication<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for ProgramClauses<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for ProjectionTy<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for QuantifiedWhereClauses<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for Substitution<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for TraitRef<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for Ty<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for TyData<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for TypeOutlives<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for VariableKinds<I>

§

type Interner = I

source§

impl<I: Interner> HasInterner for Variances<I>

§

type Interner = I

source§

impl<I: Interner, T> HasInterner for WithKind<I, T>

§

type Interner = I

source§

impl<T: HasInterner> HasInterner for Binders<T>

source§

impl<T: HasInterner> HasInterner for Canonical<T>