[][src]Enum chalk_ir::WhereClause

pub enum WhereClause<I: Interner> {
    Implemented(TraitRef<I>),
    AliasEq(AliasEq<I>),
    LifetimeOutlives(LifetimeOutlives<I>),
    TypeOutlives(TypeOutlives<I>),
}

Where clauses that can be written by a Rust programmer.

Variants

Implemented(TraitRef<I>)

Type implements a trait.

AliasEq(AliasEq<I>)

Type is equal to an alias.

LifetimeOutlives(LifetimeOutlives<I>)

One lifetime outlives another.

TypeOutlives(TypeOutlives<I>)

Type outlives a lifetime.

Implementations

impl<I: Interner> WhereClause<I>[src]

pub fn into_well_formed_goal(self, interner: &I) -> DomainGoal<I>[src]

Turn a where clause into the WF version of it i.e.:

  • Implemented(T: Trait) maps to WellFormed(T: Trait)
  • ProjectionEq(<T as Trait>::Item = Foo) maps to WellFormed(<T as Trait>::Item = Foo)
  • any other clause maps to itself

pub fn into_from_env_goal(self, interner: &I) -> DomainGoal<I>[src]

Same as into_well_formed_goal but with the FromEnv predicate instead of WellFormed.

pub fn trait_id(&self) -> Option<TraitId<I>>[src]

If where clause is a TraitRef, returns its trait id.

Trait Implementations

impl<I: Interner> CastTo<WhereClause<I>> for WhereClause<I>[src]

impl<I: Interner> CastTo<WhereClause<I>> for TraitRef<I>[src]

impl<I: Interner> CastTo<WhereClause<I>> for AliasEq<I>[src]

impl<I: Interner> CastTo<WhereClause<I>> for LifetimeOutlives<I>[src]

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

impl<I: Interner> Copy for WhereClause<I> where
    I::InternedSubstitution: Copy,
    I::InternedLifetime: Copy,
    I::InternedType: Copy
[src]

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

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

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

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

type Interner = I

The interner associated with the type.

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

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

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

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

impl<I: Interner> SuperVisit<I> for WhereClause<I>[src]

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

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

Auto Trait Implementations

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

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

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

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

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