[][src]Enum chalk_ir::TypeName

pub enum TypeName<I: Interner> {
    Adt(AdtId<I>),
    AssociatedType(AssocTypeId<I>),
    Scalar(Scalar),
    Tuple(usize),
    Array,
    Slice,
    Raw(Mutability),
    Ref(Mutability),
    OpaqueType(OpaqueTyId<I>),
    FnDef(FnDefId<I>),
    Str,
    Never,
    Closure(ClosureId<I>),
    Generator(GeneratorId<I>),
    GeneratorWitness(GeneratorId<I>),
    Foreign(ForeignDefId<I>),
    Error,
}

Different kinds of Rust types.

Variants

Adt(AdtId<I>)

Abstract data types, i.e., structs, unions, or enumerations. For example, a type like Vec<T>.

AssociatedType(AssocTypeId<I>)

an associated type like Iterator::Item; see AssociatedType for details

Scalar(Scalar)

a scalar type like bool or u32

Tuple(usize)

a tuple of the given arity

Array

an array type like [T; N]

Slice

a slice type like [T]

a raw pointer type like *const T or *mut T

a reference type like &T or &mut T

OpaqueType(OpaqueTyId<I>)

a placeholder for opaque types like impl Trait

FnDef(FnDefId<I>)

a function definition

Str

the string primitive type

Never

the never type !

Closure(ClosureId<I>)

A closure.

Generator(GeneratorId<I>)

A generator.

GeneratorWitness(GeneratorId<I>)

A generator witness.

Foreign(ForeignDefId<I>)

foreign types

Error

This can be used to represent an error, e.g. during name resolution of a type. Chalk itself will not produce this, just pass it through when given.

Trait Implementations

impl<I> CastTo<TypeName<I>> for AdtId<I> where
    I: Interner
[src]

impl<I> CastTo<TypeName<I>> for GeneratorId<I> where
    I: Interner
[src]

impl<I> CastTo<TypeName<I>> for FnDefId<I> where
    I: Interner
[src]

impl<I> CastTo<TypeName<I>> for OpaqueTyId<I> where
    I: Interner
[src]

impl<I: Clone + Interner> Clone for TypeName<I>[src]

impl<I: Copy + Interner> Copy for TypeName<I>[src]

impl<I: Interner> Debug for TypeName<I>[src]

impl<I: Eq + Interner> Eq for TypeName<I>[src]

impl<I: Interner, _TI> Fold<I, _TI> for TypeName<I> where
    _TI: TargetInterner<I>, 
[src]

type Result = TypeName<_TI>

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 TypeName<I>[src]

type Interner = I

The interner associated with the type.

impl<I: Hash + Interner> Hash for TypeName<I>[src]

impl<I: Ord + Interner> Ord for TypeName<I>[src]

impl<I: PartialEq + Interner> PartialEq<TypeName<I>> for TypeName<I>[src]

impl<I: PartialOrd + Interner> PartialOrd<TypeName<I>> for TypeName<I>[src]

impl<I: Interner> StructuralEq for TypeName<I>[src]

impl<I: Interner> StructuralPartialEq for TypeName<I>[src]

impl<I: Interner> Visit<I> for TypeName<I>[src]

impl<I: Interner> Zip<I> for TypeName<I>[src]

Auto Trait Implementations

impl<I> RefUnwindSafe for TypeName<I> where
    <I as Interner>::DefId: RefUnwindSafe,
    <I as Interner>::InternedAdtId: RefUnwindSafe

impl<I> Send for TypeName<I> where
    <I as Interner>::DefId: Send,
    <I as Interner>::InternedAdtId: Send

impl<I> Sync for TypeName<I> where
    <I as Interner>::DefId: Sync,
    <I as Interner>::InternedAdtId: Sync

impl<I> Unpin for TypeName<I> where
    <I as Interner>::DefId: Unpin,
    <I as Interner>::InternedAdtId: Unpin

impl<I> UnwindSafe for TypeName<I> where
    <I as Interner>::DefId: UnwindSafe,
    <I as Interner>::InternedAdtId: 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, 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]