Trait Num
hetseq
pub trait Num { type S: Num; type P: Num; fn value() -> usize; }
Type level number
type S: Num
Next number
type P: Num
Previous number
fn value() -> usize
Convert to value level
impl Num for Z type S = S<Z>; type P = P<Z>;
impl<N: Num> Num for S<N> type S = S<S<N>>; type P = N;
impl<N: Num> Num for P<N> type S = N; type P = P<P<N>>;