Skip to content

Commit fceed92

Browse files
committed
add min_num_traits to reduce noise
1 parent b40af1d commit fceed92

File tree

1 file changed

+25
-103
lines changed

1 file changed

+25
-103
lines changed

gix-utils/src/btoi.rs

Lines changed: 25 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -56,115 +56,37 @@ pub trait MinNumTraits: Sized + Copy {
5656
fn checked_sub(self, v: Self) -> Option<Self>;
5757
}
5858

59-
impl MinNumTraits for i64 {
60-
fn from_u32(n: u32) -> Option<i64> {
61-
Some(n.into())
62-
}
63-
64-
fn zero() -> Self {
65-
0
66-
}
67-
68-
fn checked_mul(self, v: i64) -> Option<i64> {
69-
i64::checked_mul(self, v)
70-
}
71-
72-
fn checked_add(self, v: i64) -> Option<i64> {
73-
i64::checked_add(self, v)
74-
}
75-
76-
fn checked_sub(self, v: i64) -> Option<i64> {
77-
i64::checked_sub(self, v)
78-
}
79-
}
80-
81-
impl MinNumTraits for u64 {
82-
fn from_u32(n: u32) -> Option<u64> {
83-
Some(n.into())
84-
}
85-
86-
fn zero() -> Self {
87-
0
88-
}
89-
90-
fn checked_mul(self, v: u64) -> Option<u64> {
91-
u64::checked_mul(self, v)
92-
}
93-
94-
fn checked_add(self, v: u64) -> Option<u64> {
95-
u64::checked_add(self, v)
96-
}
97-
98-
fn checked_sub(self, v: u64) -> Option<u64> {
99-
u64::checked_sub(self, v)
100-
}
101-
}
102-
103-
impl MinNumTraits for usize {
104-
fn from_u32(n: u32) -> Option<usize> {
105-
n.try_into().ok()
106-
}
107-
108-
fn zero() -> Self {
109-
0
110-
}
111-
112-
fn checked_mul(self, v: usize) -> Option<usize> {
113-
usize::checked_mul(self, v)
114-
}
115-
116-
fn checked_add(self, v: usize) -> Option<usize> {
117-
usize::checked_add(self, v)
118-
}
119-
120-
fn checked_sub(self, v: usize) -> Option<usize> {
121-
usize::checked_sub(self, v)
122-
}
123-
}
124-
125-
impl MinNumTraits for i32 {
126-
fn from_u32(n: u32) -> Option<Self> {
127-
n.try_into().ok()
128-
}
59+
macro_rules! min_num_traits {
60+
($t : ty, from_u32 => $from_u32 : expr) => {
61+
impl MinNumTraits for $t {
62+
fn from_u32(n: u32) -> Option<$t> {
63+
$from_u32(n)
64+
}
12965

130-
fn zero() -> Self {
131-
0
132-
}
66+
fn zero() -> Self {
67+
0
68+
}
13369

134-
fn checked_mul(self, v: i32) -> Option<i32> {
135-
i32::checked_mul(self, v)
136-
}
70+
fn checked_mul(self, v: $t) -> Option<$t> {
71+
<$t>::checked_mul(self, v)
72+
}
13773

138-
fn checked_add(self, v: i32) -> Option<i32> {
139-
i32::checked_add(self, v)
140-
}
74+
fn checked_add(self, v: $t) -> Option<$t> {
75+
<$t>::checked_add(self, v)
76+
}
14177

142-
fn checked_sub(self, v: i32) -> Option<i32> {
143-
i32::checked_sub(self, v)
144-
}
78+
fn checked_sub(self, v: $t) -> Option<$t> {
79+
<$t>::checked_sub(self, v)
80+
}
81+
}
82+
};
14583
}
14684

147-
impl MinNumTraits for u8 {
148-
fn from_u32(n: u32) -> Option<Self> {
149-
n.try_into().ok()
150-
}
151-
152-
fn zero() -> Self {
153-
0
154-
}
155-
156-
fn checked_mul(self, v: u8) -> Option<u8> {
157-
u8::checked_mul(self, v)
158-
}
159-
160-
fn checked_add(self, v: u8) -> Option<u8> {
161-
u8::checked_add(self, v)
162-
}
163-
164-
fn checked_sub(self, v: u8) -> Option<u8> {
165-
u8::checked_sub(self, v)
166-
}
167-
}
85+
min_num_traits!(i32, from_u32 => |n: u32| n.try_into().ok());
86+
min_num_traits!(i64, from_u32 => |n: u32| Some(n.into()));
87+
min_num_traits!(u64, from_u32 => |n: u32| Some(n.into()));
88+
min_num_traits!(u8, from_u32 => |n: u32| n.try_into().ok());
89+
min_num_traits!(usize, from_u32 => |n: u32| n.try_into().ok());
16890

16991
/// Converts a byte slice to an integer. Signs are not allowed.
17092
///

0 commit comments

Comments
 (0)