1
1
use core:: ops:: { Add , Div , Mul , Rem , Shl , Shr , Sub } ;
2
2
3
- /// Performs addition that returns `None` instead of wrapping around on
4
- /// overflow.
3
+ /// Performs addition, returning `None` if overflow occurred.
5
4
pub trait CheckedAdd : Sized + Add < Self , Output = Self > {
6
5
/// Adds two numbers, checking for overflow. If overflow happens, `None` is
7
6
/// returned.
@@ -33,9 +32,9 @@ checked_impl!(CheckedAdd, checked_add, i64);
33
32
checked_impl ! ( CheckedAdd , checked_add, isize ) ;
34
33
checked_impl ! ( CheckedAdd , checked_add, i128 ) ;
35
34
36
- /// Performs subtraction that returns `None` instead of wrapping around on underflow .
35
+ /// Performs subtraction, returning `None` if overflow occurred .
37
36
pub trait CheckedSub : Sized + Sub < Self , Output = Self > {
38
- /// Subtracts two numbers, checking for underflow . If underflow happens,
37
+ /// Subtracts two numbers, checking for overflow . If overflow happens,
39
38
/// `None` is returned.
40
39
fn checked_sub ( & self , v : & Self ) -> Option < Self > ;
41
40
}
@@ -54,11 +53,10 @@ checked_impl!(CheckedSub, checked_sub, i64);
54
53
checked_impl ! ( CheckedSub , checked_sub, isize ) ;
55
54
checked_impl ! ( CheckedSub , checked_sub, i128 ) ;
56
55
57
- /// Performs multiplication that returns `None` instead of wrapping around on underflow or
58
- /// overflow.
56
+ /// Performs multiplication, returning `None` if overflow occurred.
59
57
pub trait CheckedMul : Sized + Mul < Self , Output = Self > {
60
- /// Multiplies two numbers, checking for underflow or overflow. If underflow
61
- /// or overflow happens, `None` is returned.
58
+ /// Multiplies two numbers, checking for overflow. If overflow happens,
59
+ /// `None` is returned.
62
60
fn checked_mul ( & self , v : & Self ) -> Option < Self > ;
63
61
}
64
62
@@ -76,10 +74,10 @@ checked_impl!(CheckedMul, checked_mul, i64);
76
74
checked_impl ! ( CheckedMul , checked_mul, isize ) ;
77
75
checked_impl ! ( CheckedMul , checked_mul, i128 ) ;
78
76
79
- /// Performs division that returns `None` instead of panicking on division by zero and instead of
80
- /// wrapping around on underflow and overflow .
77
+ /// Performs division, returning `None` on division by zero or if overflow
78
+ /// occurred .
81
79
pub trait CheckedDiv : Sized + Div < Self , Output = Self > {
82
- /// Divides two numbers, checking for underflow, overflow and division by
80
+ /// Divides two numbers, checking for overflow and division by
83
81
/// zero. If any of that happens, `None` is returned.
84
82
fn checked_div ( & self , v : & Self ) -> Option < Self > ;
85
83
}
@@ -98,11 +96,11 @@ checked_impl!(CheckedDiv, checked_div, i64);
98
96
checked_impl ! ( CheckedDiv , checked_div, isize ) ;
99
97
checked_impl ! ( CheckedDiv , checked_div, i128 ) ;
100
98
101
- /// Performs an integral remainder that returns `None` instead of panicking on division by zero and
102
- /// instead of wrapping around on underflow and overflow.
99
+ /// Performs integral remainder, returning `None` on division by zero or if
100
+ /// overflow occurred .
103
101
pub trait CheckedRem : Sized + Rem < Self , Output = Self > {
104
- /// Finds the remainder of dividing two numbers, checking for underflow, overflow and division
105
- /// by zero. If any of that happens, `None` is returned.
102
+ /// Finds the remainder of dividing two numbers, checking for overflow and
103
+ /// division by zero. If any of that happens, `None` is returned.
106
104
///
107
105
/// # Examples
108
106
///
@@ -148,7 +146,7 @@ macro_rules! checked_impl_unary {
148
146
} ;
149
147
}
150
148
151
- /// Performs negation that returns `None` if the result can't be represented.
149
+ /// Performs negation, returning `None` if the result can't be represented.
152
150
pub trait CheckedNeg : Sized {
153
151
/// Negates a number, returning `None` for results that can't be represented, like signed `MIN`
154
152
/// values that can't be positive, or non-zero unsigned values that can't be negative.
@@ -183,8 +181,8 @@ checked_impl_unary!(CheckedNeg, checked_neg, i64);
183
181
checked_impl_unary ! ( CheckedNeg , checked_neg, isize ) ;
184
182
checked_impl_unary ! ( CheckedNeg , checked_neg, i128 ) ;
185
183
186
- /// Performs a left shift that returns `None` on shifts larger than
187
- /// or equal to the type width.
184
+ /// Performs shift left, returning `None` on shifts larger than or equal to
185
+ /// the type width.
188
186
pub trait CheckedShl : Sized + Shl < u32 , Output = Self > {
189
187
/// Checked shift left. Computes `self << rhs`, returning `None`
190
188
/// if `rhs` is larger than or equal to the number of bits in `self`.
@@ -227,8 +225,8 @@ checked_shift_impl!(CheckedShl, checked_shl, i64);
227
225
checked_shift_impl ! ( CheckedShl , checked_shl, isize ) ;
228
226
checked_shift_impl ! ( CheckedShl , checked_shl, i128 ) ;
229
227
230
- /// Performs a right shift that returns `None` on shifts larger than
231
- /// or equal to the type width.
228
+ /// Performs shift right, returning `None` on shifts larger than or equal to
229
+ /// the type width.
232
230
pub trait CheckedShr : Sized + Shr < u32 , Output = Self > {
233
231
/// Checked shift right. Computes `self >> rhs`, returning `None`
234
232
/// if `rhs` is larger than or equal to the number of bits in `self`.
0 commit comments