1use crate::*;
2
3pub trait ToNum<T>: Number {
4 const OUTPUT: T;
5}
6
7impl<N: Number + ToNum<isize>> ToNum<isize> for Negative<N> {
8 const OUTPUT: isize = -N::OUTPUT;
9}
10
11impl<N: Number + ToNum<isize>> ToNum<isize> for Successor<N> {
12 const OUTPUT: isize = N::OUTPUT + 1;
13}
14
15impl ToNum<isize> for Zero {
16 const OUTPUT: isize = 0;
17}
18
19impl<N: Number + ToNum<usize>> ToNum<usize> for Successor<N> {
20 const OUTPUT: usize = N::OUTPUT + 1;
21}
22
23impl ToNum<usize> for Zero {
24 const OUTPUT: usize = 0;
25}