about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJim Turner <git@turner.link>2021-03-01 16:09:41 -0500
committerJim Turner <git@turner.link>2021-03-01 17:13:50 -0500
commit9278b4c67284db95990673f26934b9d1d5af2e77 (patch)
treefad799a366a1e07bac984862f60fa408bbb4ffdd
parent5233edcf1c7ee70ac25e4ec1115c3546f53d8a2d (diff)
downloadrust-9278b4c67284db95990673f26934b9d1d5af2e77.tar.gz
rust-9278b4c67284db95990673f26934b9d1d5af2e77.zip
Document panicking cases for integer division
The panic on division by zero is expected, but the panic on overflow
is somewhat surprising (since most arithmetic operations panic on
overflow only when `debug_assertions` is enabled). As a result, it's
helpful to document this behavior.
-rw-r--r--library/core/src/ops/arith.rs13
1 files changed, 10 insertions, 3 deletions
diff --git a/library/core/src/ops/arith.rs b/library/core/src/ops/arith.rs
index 92090d8e6fc..da0f038e44e 100644
--- a/library/core/src/ops/arith.rs
+++ b/library/core/src/ops/arith.rs
@@ -456,9 +456,13 @@ pub trait Div<Rhs = Self> {
 }
 
 macro_rules! div_impl_integer {
-    ($($t:ty)*) => ($(
+    ($(($($t:ty)*) => $panic:expr),*) => ($($(
         /// This operation rounds towards zero, truncating any
         /// fractional part of the exact result.
+        ///
+        /// # Panics
+        ///
+        #[doc = $panic]
         #[stable(feature = "rust1", since = "1.0.0")]
         impl Div for $t {
             type Output = $t;
@@ -468,10 +472,13 @@ macro_rules! div_impl_integer {
         }
 
         forward_ref_binop! { impl Div, div for $t, $t }
-    )*)
+    )*)*)
 }
 
-div_impl_integer! { usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 }
+div_impl_integer! {
+    (usize u8 u16 u32 u64 u128) => "This operation will panic if `other == 0`.",
+    (isize i8 i16 i32 i64 i128) => "This operation will panic if `other == 0` or the division results in overflow."
+}
 
 macro_rules! div_impl_float {
     ($($t:ty)*) => ($(