orml_traits/
arithmetic.rs

1pub use num_traits::{
2	Bounded, CheckedAdd, CheckedDiv, CheckedMul, CheckedShl, CheckedShr, CheckedSub, One, Signed, Zero,
3};
4use sp_std::{
5	self,
6	ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Rem, RemAssign, Shl, Shr, Sub, SubAssign},
7};
8
9/// A meta trait for arithmetic.
10///
11/// Arithmetic types do all the usual stuff you'd expect numbers to do. They are
12/// guaranteed to be able to represent at least `u32` values without loss, hence
13/// the trait implies `From<u32>` and smaller ints. All other conversions are
14/// fallible.
15pub trait SimpleArithmetic:
16	Zero
17	+ One
18	+ From<u8>
19	+ From<u16>
20	+ From<u32>
21	+ TryInto<u8>
22	+ TryInto<u16>
23	+ TryInto<u32>
24	+ TryFrom<u64>
25	+ TryInto<u64>
26	+ TryFrom<u128>
27	+ TryInto<u128>
28	+ Add<Self, Output = Self>
29	+ AddAssign<Self>
30	+ Sub<Self, Output = Self>
31	+ SubAssign<Self>
32	+ Mul<Self, Output = Self>
33	+ MulAssign<Self>
34	+ Div<Self, Output = Self>
35	+ DivAssign<Self>
36	+ Rem<Self, Output = Self>
37	+ RemAssign<Self>
38	+ Shl<u32, Output = Self>
39	+ Shr<u32, Output = Self>
40	+ CheckedShl
41	+ CheckedShr
42	+ CheckedAdd
43	+ CheckedSub
44	+ CheckedMul
45	+ CheckedDiv
46	+ PartialOrd<Self>
47	+ Ord
48	+ Bounded
49	+ Sized
50{
51}
52
53impl<
54		T: Zero
55			+ One
56			+ From<u8>
57			+ From<u16>
58			+ From<u32>
59			+ TryInto<u8>
60			+ TryInto<u16>
61			+ TryInto<u32>
62			+ TryFrom<u64>
63			+ TryInto<u64>
64			+ TryFrom<u128>
65			+ TryInto<u128>
66			+ Add<Self, Output = Self>
67			+ AddAssign<Self>
68			+ Sub<Self, Output = Self>
69			+ SubAssign<Self>
70			+ Mul<Self, Output = Self>
71			+ MulAssign<Self>
72			+ Div<Self, Output = Self>
73			+ DivAssign<Self>
74			+ Rem<Self, Output = Self>
75			+ RemAssign<Self>
76			+ Shl<u32, Output = Self>
77			+ Shr<u32, Output = Self>
78			+ CheckedShl
79			+ CheckedShr
80			+ CheckedAdd
81			+ CheckedSub
82			+ CheckedMul
83			+ CheckedDiv
84			+ PartialOrd<Self>
85			+ Ord
86			+ Bounded
87			+ Sized,
88	> SimpleArithmetic for T
89{
90}