@@ -1214,6 +1214,35 @@ macro_rules! nonzero_integer_signedness_dependent_impls {
1214
1214
* self = * self % other;
1215
1215
}
1216
1216
}
1217
+
1218
+ impl NonZero <$Int> {
1219
+ /// Calculates the quotient of `self` and `rhs`, rounding the result towards positive infinity.
1220
+ ///
1221
+ /// The result is guaranteed to be non-zero.
1222
+ ///
1223
+ /// # Examples
1224
+ ///
1225
+ /// ```
1226
+ /// # #![feature(unsigned_nonzero_div_ceil)]
1227
+ /// # use std::num::NonZero;
1228
+ #[ doc = concat!( "let one = NonZero::new(1" , stringify!( $Int) , ").unwrap();" ) ]
1229
+ #[ doc = concat!( "let max = NonZero::new(" , stringify!( $Int) , "::MAX).unwrap();" ) ]
1230
+ /// assert_eq!(one.div_ceil(max), one);
1231
+ ///
1232
+ #[ doc = concat!( "let two = NonZero::new(2" , stringify!( $Int) , ").unwrap();" ) ]
1233
+ #[ doc = concat!( "let three = NonZero::new(3" , stringify!( $Int) , ").unwrap();" ) ]
1234
+ /// assert_eq!(three.div_ceil(two), two);
1235
+ /// ```
1236
+ #[ unstable( feature = "unsigned_nonzero_div_ceil" , issue = "none" ) ]
1237
+ #[ must_use = "this returns the result of the operation, \
1238
+ without modifying the original"]
1239
+ #[ inline]
1240
+ pub const fn div_ceil( self , rhs: Self ) -> Self {
1241
+ let v = self . get( ) . div_ceil( rhs. get( ) ) ;
1242
+ // SAFETY: ceiled division of two positive integers can never be zero.
1243
+ unsafe { Self :: new_unchecked( v) }
1244
+ }
1245
+ }
1217
1246
} ;
1218
1247
// Impls for signed nonzero types only.
1219
1248
( signed $Int: ty) => {
0 commit comments