diff options
| -rw-r--r-- | src/libstd/rand/isaac.rs | 6 | ||||
| -rw-r--r-- | src/libstd/rand/mod.rs | 8 | ||||
| -rw-r--r-- | src/libstd/rand/rand_impls.rs | 3 |
3 files changed, 11 insertions, 6 deletions
diff --git a/src/libstd/rand/isaac.rs b/src/libstd/rand/isaac.rs index b785189ef93..0068b60cfa5 100644 --- a/src/libstd/rand/isaac.rs +++ b/src/libstd/rand/isaac.rs @@ -363,6 +363,12 @@ impl Isaac64Rng { } impl Rng for Isaac64Rng { + // FIXME #7771: having next_u32 like this should be unnecessary + #[inline] + fn next_u32(&mut self) -> u32 { + self.next_u64() as u32 + } + #[inline] fn next_u64(&mut self) -> u64 { if self.cnt == 0 { diff --git a/src/libstd/rand/mod.rs b/src/libstd/rand/mod.rs index f68bf71ba7f..a6ffbdd7b17 100644 --- a/src/libstd/rand/mod.rs +++ b/src/libstd/rand/mod.rs @@ -99,12 +99,8 @@ pub trait Rng { /// Return the next random u32. This rarely needs to be called /// directly, prefer `r.gen()` to `r.next_u32()`. /// - /// By default this is implemented in terms of `next_u64`. An - /// implementation of this trait must provide at least one of - /// these two methods. - fn next_u32(&mut self) -> u32 { - self.next_u64() as u32 - } + // FIXME #7771: Should be implemented in terms of next_u64 + fn next_u32(&mut self) -> u32; /// Return the next random u64. This rarely needs to be called /// directly, prefer `r.gen()` to `r.next_u64()`. diff --git a/src/libstd/rand/rand_impls.rs b/src/libstd/rand/rand_impls.rs index 8ad0bd9e297..aad0d4e861c 100644 --- a/src/libstd/rand/rand_impls.rs +++ b/src/libstd/rand/rand_impls.rs @@ -209,6 +209,9 @@ mod tests { use rand::Rng; struct ConstantRng(u64); impl Rng for ConstantRng { + fn next_u32(&mut self) -> u32 { + (**self) as u32 + } fn next_u64(&mut self) -> u64 { **self } |
