Trait path_semantics_std::Constrain
[−]
[src]
pub trait Constrain<I> { type Lift; fn i_force(&self, _: I) -> Self::Lift; fn i(&self, i: I) -> Self::Lift
where
Self::Lift: ExPath, { ... } }
Implemented by higher order representations of constrained functions.
Associated Types
type Lift
Required Methods
fn i_force(&self, _: I) -> Self::Lift
Override input constraint even when existential path does not exist.
Provided Methods
fn i(&self, i: I) -> Self::Lift where
Self::Lift: ExPath,
Self::Lift: ExPath,
Constrains input but only if an existential path is supported for the constraint.
Implementors
impl<I> Constrain<I> for () type Lift = ();
impl<Co: Clone, Tr: Clone, Fa: Clone, I, I2> Constrain<I> for If<Co, Tr, Fa, I2> type Lift = If<Co, Tr, Fa, I>;
impl<I, I2> Constrain<I2> for Not<I> type Lift = Not<I2>;
impl<T, I, I2> Constrain<I2> for Id<T, I> type Lift = Id<T, I2>;
impl<T, I, I2> Constrain<I2> for False1<T, I> type Lift = False1<T, I2>;
impl<I, I2> Constrain<I2> for And<I> type Lift = And<I2>;
impl<I, I2> Constrain<I2> for Or<I> type Lift = Or<I2>;
impl<T, I, I2> Constrain<I2> for Eq<T, I> type Lift = Eq<T, I2>;
impl<I, I2> Constrain<I2> for Xor<I> type Lift = Xor<I2>;
impl<I, I2> Constrain<I2> for Nand<I> type Lift = Nand<I2>;
impl<I, I2> Constrain<I2> for Nor<I> type Lift = Nor<I2>;
impl<I, I2> Constrain<I2> for Exc<I> type Lift = Exc<I2>;
impl<I, I2> Constrain<I2> for Rexc<I> type Lift = Rexc<I2>;
impl<I, I2> Constrain<I2> for Nexc<I> type Lift = Nexc<I2>;
impl<I, I2> Constrain<I2> for Nrexc<I> type Lift = Nrexc<I2>;
impl<T, I, I2> Constrain<I2> for Even<T, I> type Lift = Even<T, I2>;
impl<T, I, I2> Constrain<I2> for Odd<T, I> type Lift = Odd<T, I2>;
impl<T, I, I2> Constrain<I2> for Add<T, I> type Lift = Add<T, I2>;
impl<T: Clone, I, I2> Constrain<I2> for AddK<T, I> type Lift = AddK<T, I2>;
impl<T: Clone, I, I2> Constrain<I2> for GeK<T, I> type Lift = GeK<T, I2>;
impl<T: Clone, I, I2> Constrain<I2> for LtK<T, I> type Lift = LtK<T, I2>;
impl<T: Clone, I, I2> Constrain<I2> for EqK<T, I> type Lift = EqK<T, I2>;