std::rand: Make Rng.next_u32 non-default, waiting for #7771.
This commit is contained in:
parent
618c6afe32
commit
62fededd8e
@ -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 {
|
||||
|
@ -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()`.
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user