smartcore/numbers/
basenum.rs1use num_traits::{Bounded, FromPrimitive, Num, NumCast, ToPrimitive};
2use std::fmt::{Debug, Display};
3use std::iter::{Product, Sum};
4use std::ops::{AddAssign, DivAssign, MulAssign, SubAssign};
5
6pub trait Number:
9 Num
10 + FromPrimitive
11 + ToPrimitive
12 + Debug
13 + Display
14 + Copy
15 + Sum
16 + Product
17 + AddAssign
18 + SubAssign
19 + MulAssign
20 + DivAssign
21 + Bounded
22 + NumCast
23{
24}
25
26impl Number for f64 {}
27impl Number for f32 {}
28impl Number for i8 {}
29impl Number for i16 {}
30impl Number for i32 {}
31impl Number for i64 {}
32impl Number for u8 {}
33impl Number for u16 {}
34impl Number for u32 {}
35impl Number for u64 {}
36impl Number for usize {}
37
38#[cfg(test)]
39mod tests {
40 use std::str::FromStr;
41
42 #[test]
43 fn i32_from_string() {
44 assert_eq!(i32::from_str("1").unwrap(), 1)
45 }
46
47 #[test]
48 fn i8_from_string() {
49 assert_eq!(i8::from_str("1").unwrap(), 1)
50 }
51}