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.