diff --git a/library/core/src/num/saturating.rs b/library/core/src/num/saturating.rs index 3f4791e163e69..84683f93c9b78 100644 --- a/library/core/src/num/saturating.rs +++ b/library/core/src/num/saturating.rs @@ -5,6 +5,7 @@ use crate::ops::{ Add, AddAssign, BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitXorAssign, Div, DivAssign, Mul, MulAssign, Neg, Not, Rem, RemAssign, Sub, SubAssign, }; +use crate::random::{Random, RandomSource}; /// Provides intentionally-saturating arithmetic on `T`. /// @@ -79,6 +80,13 @@ impl fmt::UpperHex for Saturating { } } +#[unstable(feature = "random", issue = "130703")] +impl Random for Saturating { + fn random(source: &mut (impl RandomSource + ?Sized)) -> Self { + Self(T::random(source)) + } +} + // FIXME the correct implementation is not clear. Waiting for a real world use case at https://github.com/rust-lang/libs-team/issues/230 // // #[allow(unused_macros)] diff --git a/library/core/src/num/wrapping.rs b/library/core/src/num/wrapping.rs index 55fa91d0b9f49..c49107ffbc31d 100644 --- a/library/core/src/num/wrapping.rs +++ b/library/core/src/num/wrapping.rs @@ -5,6 +5,7 @@ use crate::ops::{ Add, AddAssign, BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitXorAssign, Div, DivAssign, Mul, MulAssign, Neg, Not, Rem, RemAssign, Shl, ShlAssign, Shr, ShrAssign, Sub, SubAssign, }; +use crate::random::{Random, RandomSource}; /// Provides intentionally-wrapped arithmetic on `T`. /// @@ -84,6 +85,13 @@ impl fmt::UpperHex for Wrapping { } } +#[unstable(feature = "random", issue = "130703")] +impl Random for Wrapping { + fn random(source: &mut (impl RandomSource + ?Sized)) -> Self { + Self(T::random(source)) + } +} + #[allow(unused_macros)] macro_rules! sh_impl_signed { ($t:ident, $f:ident) => {