arbitrary_int/
v1_number_compat.rs1use crate::traits::{Integer, UnsignedInteger};
2use crate::TryNewError;
3use core::fmt::Debug;
4
5#[deprecated(
13 since = "2.0.0",
14 note = "Use [`UnsignedInteger`] or [`Integer`] instead. Suggested to import via `use arbitrary_int::prelude::*`."
15)]
16pub trait Number: UnsignedInteger<UnderlyingType = <Self as Number>::UnderlyingType> {
17 type UnderlyingType: Integer
18 + Debug
19 + From<u8>
20 + TryFrom<u16>
21 + TryFrom<u32>
22 + TryFrom<u64>
23 + TryFrom<u128>;
24
25 const BITS: usize = <Self as Integer>::BITS;
27
28 const MIN: Self = <Self as Integer>::MIN;
30
31 const MAX: Self = <Self as Integer>::MAX;
33
34 #[inline]
37 fn new(value: <Self as Number>::UnderlyingType) -> Self {
38 Integer::new(value)
39 }
40
41 #[inline]
43 fn try_new(value: <Self as Number>::UnderlyingType) -> Result<Self, TryNewError> {
44 Integer::try_new(value)
45 }
46
47 #[inline]
48 fn value(self) -> <Self as Number>::UnderlyingType {
49 Integer::value(self)
50 }
51
52 #[inline]
55 fn from_<T: Number>(value: T) -> Self {
56 Integer::from_(value)
57 }
58
59 #[inline]
62 fn masked_new<T: Number>(value: T) -> Self {
63 Integer::masked_new(value)
64 }
65
66 #[inline]
67 fn as_u8(&self) -> u8 {
68 Integer::as_u8(*self)
69 }
70
71 #[inline]
72 fn as_u16(&self) -> u16 {
73 Integer::as_u16(*self)
74 }
75
76 #[inline]
77 fn as_u32(&self) -> u32 {
78 Integer::as_u32(*self)
79 }
80
81 #[inline]
82 fn as_u64(&self) -> u64 {
83 Integer::as_u64(*self)
84 }
85
86 #[inline]
87 fn as_u128(&self) -> u128 {
88 Integer::as_u128(*self)
89 }
90
91 #[inline]
92 fn as_usize(&self) -> usize {
93 Integer::as_usize(*self)
94 }
95
96 #[inline]
97 fn as_<T: Number>(self) -> T {
98 Integer::as_(self)
99 }
100}