[][src]Enum chalk_ir::FromEnv

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

Variants

Trait(TraitRef<I>)

A predicate which enables deriving everything which should be true if we know that some trait ref is well-formed. For example given the above trait definitions, we can use FromEnv(T: Copy) to derive that T: Clone, like in:

forall<T> {
    if (FromEnv(T: Copy)) {
        T: Clone
    }
}
Ty(Ty<I>)

A predicate which enables deriving everything which should be true if we know that some type is well-formed. For example given the above type definition, we can use FromEnv(Set<K>) to derive that K: Hash, like in:

forall<K> {
    if (FromEnv(Set<K>)) {
        K: Hash
    }
}

Trait Implementations

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

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

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

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

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

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

type Interner = I

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

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

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

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

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

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

Auto Trait Implementations

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

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

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

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

impl<I> UnwindSafe for FromEnv<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]