pub trait Clause<I: Interner<Clause = Self>>:
Copy
+ Debug
+ Hash
+ Eq
+ TypeFoldable<I>
+ UpcastFrom<I, Binder<I, ClauseKind<I>>>
+ UpcastFrom<I, TraitRef<I>>
+ UpcastFrom<I, Binder<I, TraitRef<I>>>
+ UpcastFrom<I, TraitPredicate<I>>
+ UpcastFrom<I, Binder<I, TraitPredicate<I>>>
+ UpcastFrom<I, ProjectionPredicate<I>>
+ UpcastFrom<I, Binder<I, ProjectionPredicate<I>>>
+ IntoKind<Kind = Binder<I, ClauseKind<I>>>
+ Elaboratable<I> {
// Required methods
fn as_predicate(self) -> I::Predicate;
fn instantiate_supertrait(
self,
cx: I,
trait_ref: Binder<I, TraitRef<I>>,
) -> Self;
// Provided methods
fn as_trait_clause(self) -> Option<Binder<I, TraitPredicate<I>>> { ... }
fn as_projection_clause(self) -> Option<Binder<I, ProjectionPredicate<I>>> { ... }
}
Required Methods§
fn as_predicate(self) -> I::Predicate
sourcefn instantiate_supertrait(
self,
cx: I,
trait_ref: Binder<I, TraitRef<I>>,
) -> Self
fn instantiate_supertrait( self, cx: I, trait_ref: Binder<I, TraitRef<I>>, ) -> Self
Performs a instantiation suitable for going from a poly-trait-ref to supertraits that must hold if that poly-trait-ref holds. This is slightly different from a normal instantiation in terms of what happens with bound regions.
Provided Methods§
fn as_trait_clause(self) -> Option<Binder<I, TraitPredicate<I>>>
fn as_projection_clause(self) -> Option<Binder<I, ProjectionPredicate<I>>>
Object Safety§
This trait is not object safe.