[][src]Enum chalk_ir::WellFormed

pub enum WellFormed<I: Interner> {
    Trait(TraitRef<I>),
    Ty(Ty<I>),
}

Variants

Trait(TraitRef<I>)

A predicate which is true when some trait ref is well-formed. For example, given the following trait definitions:

trait Clone { ... }
trait Copy where Self: Clone { ... }

then we have the following rule:

WellFormed(?Self: Copy) :- ?Self: Copy, WellFormed(?Self: Clone)
Ty(Ty<I>)

A predicate which is true when some type is well-formed. For example, given the following type definition:

struct Set<K> where K: Hash {
    ...
}

then we have the following rule: WellFormedTy(Set<K>) :- Implemented(K: Hash).

Trait Implementations

impl<I: Interner> CastTo<DomainGoal<I>> for WellFormed<I>[src]

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

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

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

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

type Result = WellFormed<_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 WellFormed<I>[src]

type Interner = I

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

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

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

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

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

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

Auto Trait Implementations

impl<I> RefUnwindSafe for WellFormed<I> where
    <I as Interner>::DefId: RefUnwindSafe,
    <I as Interner>::InternedSubstitution: RefUnwindSafe,
    <I as Interner>::InternedType: RefUnwindSafe

impl<I> Send for WellFormed<I> where
    <I as Interner>::DefId: Send,
    <I as Interner>::InternedSubstitution: Send,
    <I as Interner>::InternedType: Send

impl<I> Sync for WellFormed<I> where
    <I as Interner>::DefId: Sync,
    <I as Interner>::InternedSubstitution: Sync,
    <I as Interner>::InternedType: Sync

impl<I> Unpin for WellFormed<I> where
    <I as Interner>::DefId: Unpin,
    <I as Interner>::InternedSubstitution: Unpin,
    <I as Interner>::InternedType: Unpin

impl<I> UnwindSafe for WellFormed<I> where
    <I as Interner>::DefId: UnwindSafe,
    <I as Interner>::InternedSubstitution: UnwindSafe,
    <I as Interner>::InternedType: 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> CastTo<DomainGoal<I>> for T where
    I: Interner,
    T: CastTo<WhereClause<I>>, 
[src]

impl<T, I> CastTo<Goal<I>> for T where
    I: Interner,
    T: CastTo<DomainGoal<I>>, 
[src]

impl<T, I> CastTo<ProgramClause<I>> for T where
    I: Interner,
    T: CastTo<DomainGoal<I>>, 
[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]