extra-safe 0.1.1

A trait hierarchy to help make the SAFE API return errors at compile time.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
error[E0277]: cannot subtract `B1` from `UInt<UInt<UTerm, B0>, B0>`
  --> src/unit_tests/compilation/sponge_bad_api.rs:89:22
   |
89 |         extra_sponge.absorb(Array::from_core_array(five_array), &mut Vec::default());
   |                      ^^^^^^ no implementation for `UInt<UInt<UTerm, B0>, B0> - B1`
   |
   = help: the trait `Sub<B1>` is not implemented for `UInt<UInt<UTerm, B0>, B0>`
   = help: the following other types implement trait `Sub<Rhs>`:
             <UInt<U, B0> as Sub<B1>>
             <UInt<U, B> as Sub<B0>>
             <UInt<UInt<U, B>, B1> as Sub<B1>>
             <UInt<UTerm, B1> as Sub<B1>>
             <UInt<Ul, Bl> as Sub<Ur>>
   = note: required for `UInt<UInt<UInt<UTerm, B1>, B0>, B0>` to implement `PrivateSub<UInt<UInt<UInt<UTerm, B1>, B0>, B1>>`
   = note: required for `UInt<UInt<UInt<UTerm, B1>, B0>, B0>` to implement `Sub<UInt<UInt<UInt<UTerm, B1>, B0>, B1>>`
   = note: required for `Cons<extra_safe::traits::Absorb<UInt<UInt<UInt<UTerm, B1>, B0>, B0>>, Cons<extra_safe::traits::Squeeze<UInt<UInt<UTerm, B1>, B1>>, Nil>>` to implement `Consume<extra_safe::traits::Absorb<UInt<UInt<UInt<UTerm, B1>, B0>, B1>>>`