[−][src]Enum chalk_ir::TyData
Type data, which holds the actual type information.
Variants
Apply(ApplicationTy<I>)
An "application" type is one that applies the set of type
arguments to some base type. For example, Vec<u32>
would be
"applying" the parameters [u32]
to the code type Vec
.
This type is also used for base types like u32
(which just apply
an empty list).
Placeholder(PlaceholderIndex)
instantiated form a universally quantified type, e.g., from
forall<T> { .. }
. Stands in as a representative of "some
unknown type".
Dyn(DynTy<I>)
A "dyn" type is a trait object type created via the "dyn Trait" syntax. In the chalk parser, the traits that the object represents is parsed as a QuantifiedInlineBound, and is then changed to a list of where clauses during lowering.
See the Opaque
variant for a discussion about the use of
binders here.
Alias(AliasTy<I>)
An "alias" type represents some form of type alias, such as:
- An associated type projection like
<T as Iterator>::Item
impl Trait
types- Named type aliases like
type Foo<X> = Vec<X>
Function(Fn<I>)
A function type such as for<'a> fn(&'a u32)
.
Note that "higher-ranked" types (starting with for<>
) are either
function types or dyn types, and do not appear otherwise in Rust
surface syntax.
BoundVar(BoundVar)
References the binding at the given depth. The index is a [de Bruijn index], so it counts back through the in-scope binders.
InferenceVar(InferenceVar, TyKind)
Inference variable defined in the current inference context.
Implementations
impl<I: Interner> TyData<I>
[src]
Trait Implementations
impl<I: Interner> CastTo<TyData<I>> for TyData<I>
[src]
impl<I: Interner> CastTo<TyData<I>> for ApplicationTy<I>
[src]
impl<I: Interner> CastTo<TyData<I>> for AliasTy<I>
[src]
impl<I: Clone + Interner> Clone for TyData<I>
[src]
impl<I: Interner> Copy for TyData<I> where
I::InternedLifetime: Copy,
I::InternedSubstitution: Copy,
I::InternedVariableKinds: Copy,
I::InternedQuantifiedWhereClauses: Copy,
[src]
I::InternedLifetime: Copy,
I::InternedSubstitution: Copy,
I::InternedVariableKinds: Copy,
I::InternedQuantifiedWhereClauses: Copy,
impl<I: Interner> Debug for TyData<I>
[src]
impl<I: Eq + Interner> Eq for TyData<I>
[src]
impl<I: Interner> HasInterner for TyData<I>
[src]
type Interner = I
The interner associated with the type.
impl<I: Hash + Interner> Hash for TyData<I>
[src]
fn hash<__H: Hasher>(&self, state: &mut __H)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl<I: PartialEq + Interner> PartialEq<TyData<I>> for TyData<I>
[src]
impl<I: Interner> StructuralEq for TyData<I>
[src]
impl<I: Interner> StructuralPartialEq for TyData<I>
[src]
Auto Trait Implementations
impl<I> RefUnwindSafe for TyData<I> where
<I as Interner>::DefId: RefUnwindSafe,
<I as Interner>::InternedAdtId: RefUnwindSafe,
<I as Interner>::InternedLifetime: RefUnwindSafe,
<I as Interner>::InternedQuantifiedWhereClauses: RefUnwindSafe,
<I as Interner>::InternedSubstitution: RefUnwindSafe,
<I as Interner>::InternedVariableKinds: RefUnwindSafe,
<I as Interner>::DefId: RefUnwindSafe,
<I as Interner>::InternedAdtId: RefUnwindSafe,
<I as Interner>::InternedLifetime: RefUnwindSafe,
<I as Interner>::InternedQuantifiedWhereClauses: RefUnwindSafe,
<I as Interner>::InternedSubstitution: RefUnwindSafe,
<I as Interner>::InternedVariableKinds: RefUnwindSafe,
impl<I> Send for TyData<I> where
<I as Interner>::DefId: Send,
<I as Interner>::InternedAdtId: Send,
<I as Interner>::InternedLifetime: Send,
<I as Interner>::InternedQuantifiedWhereClauses: Send,
<I as Interner>::InternedSubstitution: Send,
<I as Interner>::InternedVariableKinds: Send,
<I as Interner>::DefId: Send,
<I as Interner>::InternedAdtId: Send,
<I as Interner>::InternedLifetime: Send,
<I as Interner>::InternedQuantifiedWhereClauses: Send,
<I as Interner>::InternedSubstitution: Send,
<I as Interner>::InternedVariableKinds: Send,
impl<I> Sync for TyData<I> where
<I as Interner>::DefId: Sync,
<I as Interner>::InternedAdtId: Sync,
<I as Interner>::InternedLifetime: Sync,
<I as Interner>::InternedQuantifiedWhereClauses: Sync,
<I as Interner>::InternedSubstitution: Sync,
<I as Interner>::InternedVariableKinds: Sync,
<I as Interner>::DefId: Sync,
<I as Interner>::InternedAdtId: Sync,
<I as Interner>::InternedLifetime: Sync,
<I as Interner>::InternedQuantifiedWhereClauses: Sync,
<I as Interner>::InternedSubstitution: Sync,
<I as Interner>::InternedVariableKinds: Sync,
impl<I> Unpin for TyData<I> where
<I as Interner>::DefId: Unpin,
<I as Interner>::InternedAdtId: Unpin,
<I as Interner>::InternedLifetime: Unpin,
<I as Interner>::InternedQuantifiedWhereClauses: Unpin,
<I as Interner>::InternedSubstitution: Unpin,
<I as Interner>::InternedVariableKinds: Unpin,
<I as Interner>::DefId: Unpin,
<I as Interner>::InternedAdtId: Unpin,
<I as Interner>::InternedLifetime: Unpin,
<I as Interner>::InternedQuantifiedWhereClauses: Unpin,
<I as Interner>::InternedSubstitution: Unpin,
<I as Interner>::InternedVariableKinds: Unpin,
impl<I> UnwindSafe for TyData<I> where
<I as Interner>::DefId: UnwindSafe,
<I as Interner>::InternedAdtId: UnwindSafe,
<I as Interner>::InternedLifetime: UnwindSafe,
<I as Interner>::InternedQuantifiedWhereClauses: UnwindSafe,
<I as Interner>::InternedSubstitution: UnwindSafe,
<I as Interner>::InternedVariableKinds: UnwindSafe,
<I as Interner>::DefId: UnwindSafe,
<I as Interner>::InternedAdtId: UnwindSafe,
<I as Interner>::InternedLifetime: UnwindSafe,
<I as Interner>::InternedQuantifiedWhereClauses: UnwindSafe,
<I as Interner>::InternedSubstitution: UnwindSafe,
<I as Interner>::InternedVariableKinds: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Cast for T
[src]
fn cast<U>(self, interner: &U::Interner) -> U where
Self: CastTo<U>,
U: HasInterner,
[src]
Self: CastTo<U>,
U: HasInterner,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,