Type Alias ClauseKind

Source
pub type ClauseKind<'db> = ClauseKind<DbInterner<'db>>;

Aliased Type§

pub enum ClauseKind<'db> {
    Trait(TraitPredicate<DbInterner<'db>>),
    RegionOutlives(OutlivesPredicate<DbInterner<'db>, Region<'db>>),
    TypeOutlives(OutlivesPredicate<DbInterner<'db>, Ty<'db>>),
    Projection(ProjectionPredicate<DbInterner<'db>>),
    ConstArgHasType(Const<'db>, Ty<'db>),
    WellFormed(Term<'db>),
    ConstEvaluatable(Const<'db>),
    HostEffect(HostEffectPredicate<DbInterner<'db>>),
    UnstableFeature(()),
}

Variants§

§

Trait(TraitPredicate<DbInterner<'db>>)

Corresponds to where Foo: Bar<A, B, C>. Foo here would be the Self type of the trait reference and A, B, and C would be the type parameters.

§

RegionOutlives(OutlivesPredicate<DbInterner<'db>, Region<'db>>)

where 'a: 'r

§

TypeOutlives(OutlivesPredicate<DbInterner<'db>, Ty<'db>>)

where T: 'r

§

Projection(ProjectionPredicate<DbInterner<'db>>)

where <T as TraitRef>::Name == X, approximately. See the ProjectionPredicate struct for details.

§

ConstArgHasType(Const<'db>, Ty<'db>)

Ensures that a const generic argument to a parameter const N: u8 is of type u8.

§

WellFormed(Term<'db>)

No syntax: T well-formed.

§

ConstEvaluatable(Const<'db>)

Constant initializer must evaluate successfully.

§

HostEffect(HostEffectPredicate<DbInterner<'db>>)

Enforces the constness of the predicate we’re calling. Like a projection goal from a where clause, it’s always going to be paired with a corresponding trait clause; this just enforces the constness of that implementation.

§

UnstableFeature(())

Support marking impl as unstable.