pub trait Pred: Nat {
type Result: Nat;
}Expand description
§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);