Rollup merge of #128103 - folkertdev:unsigned-int-is-multiple-of, r=A… · model-checking/verify-rust-std@2a70839 (original) (raw)

`@@ -2853,6 +2853,35 @@ macro_rules! uint_impl {

`

2853

2853

`}

`

2854

2854

`}

`

2855

2855

``

``

2856

`` +

/// Returns true if self is an integer multiple of rhs, and false otherwise.

``

``

2857

`+

///

`

``

2858

`` +

/// This function is equivalent to self % rhs == 0, except that it will not panic

``

``

2859

`` +

/// for rhs == 0. Instead, 0.is_multiple_of(0) == true, and for any non-zero n,

``

``

2860

`` +

/// n.is_multiple_of(0) == false.

``

``

2861

`+

///

`

``

2862

`+

/// # Examples

`

``

2863

`+

///

`

``

2864

`+

/// Basic usage:

`

``

2865

`+

///

`

``

2866


/// ```

``

2867

`+

/// #![feature(unsigned_is_multiple_of)]

`

``

2868

`+

#[doc = concat!("assert!(6_", stringify!($SelfT), ".is_multiple_of(2));")]

`

``

2869

`+

#[doc = concat!("assert!(!5_", stringify!($SelfT), ".is_multiple_of(2));")]

`

``

2870

`+

///

`

``

2871

`+

#[doc = concat!("assert!(0_", stringify!($SelfT), ".is_multiple_of(0));")]

`

``

2872

`+

#[doc = concat!("assert!(!6_", stringify!($SelfT), ".is_multiple_of(0));")]

`

``

2873


/// ```

``

2874

`+

#[unstable(feature = "unsigned_is_multiple_of", issue = "128101")]

`

``

2875

`+

#[must_use]

`

``

2876

`+

#[inline]

`

``

2877

`+

#[rustc_inherit_overflow_checks]

`

``

2878

`+

pub const fn is_multiple_of(self, rhs: Self) -> bool {

`

``

2879

`+

match rhs {

`

``

2880

`+

0 => self == 0,

`

``

2881

`+

_ => self % rhs == 0,

`

``

2882

`+

}

`

``

2883

`+

}

`

``

2884

+

2856

2885

`` /// Returns true if and only if self == 2^k for some k.

``

2857

2886

`///

`

2858

2887

`/// # Examples

`