diff options
| author | Asger Hautop Drewsen <asger@tyilo.com> | 2024-11-05 23:42:19 +0100 |
|---|---|---|
| committer | Asger Hautop Drewsen <asger@tyilo.com> | 2024-11-05 23:42:19 +0100 |
| commit | 97a1b940ca4a9b98a1c7dadee9f0afdc760f802d (patch) | |
| tree | d5db9821e3b2486bfce395eeeef5198e70ed93ad | |
| parent | e8c698bb3bdc121ac7f65919bd16d22f6567a3f1 (diff) | |
| download | rust-97a1b940ca4a9b98a1c7dadee9f0afdc760f802d.tar.gz rust-97a1b940ca4a9b98a1c7dadee9f0afdc760f802d.zip | |
Implement div_ceil for NonZero<unsigned>
| -rw-r--r-- | library/core/src/num/nonzero.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/library/core/src/num/nonzero.rs b/library/core/src/num/nonzero.rs index 056b4b2d750..c7eb9d0f3fd 100644 --- a/library/core/src/num/nonzero.rs +++ b/library/core/src/num/nonzero.rs @@ -1214,6 +1214,35 @@ macro_rules! nonzero_integer_signedness_dependent_impls { *self = *self % other; } } + + impl NonZero<$Int> { + /// Calculates the quotient of `self` and `rhs`, rounding the result towards positive infinity. + /// + /// The result is guaranteed to be non-zero. + /// + /// # Examples + /// + /// ``` + /// # #![feature(unsigned_nonzero_div_ceil)] + /// # use std::num::NonZero; + #[doc = concat!("let one = NonZero::new(1", stringify!($Int), ").unwrap();")] + #[doc = concat!("let max = NonZero::new(", stringify!($Int), "::MAX).unwrap();")] + /// assert_eq!(one.div_ceil(max), one); + /// + #[doc = concat!("let two = NonZero::new(2", stringify!($Int), ").unwrap();")] + #[doc = concat!("let three = NonZero::new(3", stringify!($Int), ").unwrap();")] + /// assert_eq!(three.div_ceil(two), two); + /// ``` + #[unstable(feature = "unsigned_nonzero_div_ceil", issue = "none")] + #[must_use = "this returns the result of the operation, \ + without modifying the original"] + #[inline] + pub const fn div_ceil(self, rhs: Self) -> Self { + let v = self.get().div_ceil(rhs.get()); + // SAFETY: ceiled division of two positive integers can never be zero. + unsafe { Self::new_unchecked(v) } + } + } }; // Impls for signed nonzero types only. (signed $Int:ty) => { |
