Encapsulates the concrete representation of core types such as types and goals.
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
A “interner” encapsulates the concrete representation of certain “core types” from chalk-ir. All the types in chalk-ir are parameterized by a
I: Interner, and so (e.g.) if they want to store a type, they don’t store a
Ty<I>instance directly, but rather prefer a
Ty<I>. You can think of
I::Typeas the interned representation (and, indeed, it may well be an interned pointer, e.g. in rustc).