Skip to main content

## Predicate

# Trait Predicate

Source

    pub trait Predicate<I>:
        Copy
        + Debug
        + Hash
        + Eq
        + TypeSuperVisitable<I>
        + TypeSuperFoldable<I>
        + Flags
        + UpcastFrom<I, PredicateKind<I>>
        + UpcastFrom<I, Binder<I, PredicateKind<I>>>
        + UpcastFrom<I, ClauseKind<I>>
        + UpcastFrom<I, Binder<I, ClauseKind<I>>>
        + UpcastFrom<I, <I as Interner>::Clause>
        + UpcastFrom<I, NormalizesTo<I>>
        + UpcastFrom<I, TraitRef<I>>
        + UpcastFrom<I, Binder<I, TraitRef<I>>>
        + UpcastFrom<I, TraitPredicate<I>>
        + UpcastFrom<I, OutlivesPredicate<I, <I as Interner>::Ty>>
        + UpcastFrom<I, OutlivesPredicate<I, <I as Interner>::Region>>
        + IntoKind<Kind = Binder<I, PredicateKind<I>>>
        + Elaboratable<I>where
        I: Interner<Predicate = Self>,{
        // Required method
        fn as_clause(self) -> Option<<I as Interner>::Clause>;

        // Provided methods
        fn as_normalizes_to(self) -> Option<Binder<I, NormalizesTo<I>>> { ... }
        fn allow_normalization(self) -> bool { ... }
    }

## Required Methods§

Source

#### fn as_clause(self) -> Option<<I as Interner>::Clause>

## Provided Methods§

Source

#### fn as_normalizes_to(self) -> Option<Binder<I, NormalizesTo<I>>>

Source

#### fn allow_normalization(self) -> bool

## Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

## Implementors§

Source§

### impl<'tcx> Predicate<TyCtxt<'tcx>> for Predicate<'tcx>