Skip to content

Commit 62feded

Browse files
committed
std::rand: Make Rng.next_u32 non-default, waiting for #7771.
1 parent 618c6af commit 62feded

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

src/libstd/rand/isaac.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,12 @@ impl Isaac64Rng {
363363
}
364364

365365
impl Rng for Isaac64Rng {
366+
// FIXME #7771: having next_u32 like this should be unnecessary
367+
#[inline]
368+
fn next_u32(&mut self) -> u32 {
369+
self.next_u64() as u32
370+
}
371+
366372
#[inline]
367373
fn next_u64(&mut self) -> u64 {
368374
if self.cnt == 0 {

src/libstd/rand/mod.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,8 @@ pub trait Rng {
9999
/// Return the next random u32. This rarely needs to be called
100100
/// directly, prefer `r.gen()` to `r.next_u32()`.
101101
///
102-
/// By default this is implemented in terms of `next_u64`. An
103-
/// implementation of this trait must provide at least one of
104-
/// these two methods.
105-
fn next_u32(&mut self) -> u32 {
106-
self.next_u64() as u32
107-
}
102+
// FIXME #7771: Should be implemented in terms of next_u64
103+
fn next_u32(&mut self) -> u32;
108104

109105
/// Return the next random u64. This rarely needs to be called
110106
/// directly, prefer `r.gen()` to `r.next_u64()`.

src/libstd/rand/rand_impls.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,9 @@ mod tests {
209209
use rand::Rng;
210210
struct ConstantRng(u64);
211211
impl Rng for ConstantRng {
212+
fn next_u32(&mut self) -> u32 {
213+
(**self) as u32
214+
}
212215
fn next_u64(&mut self) -> u64 {
213216
**self
214217
}

0 commit comments

Comments
 (0)