[][src]Trait trait_eval::Pred

pub trait Pred: Nat {
    type Result: Nat;
}

Saturating Decrement

See, this is engineering at its finest, compile-time execution and no undefined behaviour!

assert_eq!(<Zero as Pred>::Result::eval(), 0);
assert_eq!(<One as Pred>::Result::eval(), 0);
assert_eq!(<Two as Pred>::Result::eval(), 1);
assert_eq!(<Three as Pred>::Result::eval(), 2);
assert_eq!(<Four as Pred>::Result::eval(), 3);
assert_eq!(<Five as Pred>::Result::eval(), 4);
assert_eq!(<Six as Pred>::Result::eval(), 5);
assert_eq!(<Seven as Pred>::Result::eval(), 6);
assert_eq!(<Eight as Pred>::Result::eval(), 7);
assert_eq!(<Nine as Pred>::Result::eval(), 8);
assert_eq!(<Ten as Pred>::Result::eval(), 9);

Associated Types

type Result: Nat

Loading content...

Implementors

impl Pred for Zero[src]

type Result = Zero

impl<T: Nat> Pred for Succ<T>[src]

type Result = T

Loading content...