librand: use #[deriving(Copy)]
This commit is contained in:
parent
e0a88a78da
commit
a18d090c3c
@ -29,14 +29,13 @@ const CHACHA_ROUNDS: uint = 20; // Cryptographically secure from 8 upwards as of
|
||||
/// [1]: D. J. Bernstein, [*ChaCha, a variant of
|
||||
/// Salsa20*](http://cr.yp.to/chacha.html)
|
||||
|
||||
#[deriving(Copy)]
|
||||
pub struct ChaChaRng {
|
||||
buffer: [u32, ..STATE_WORDS], // Internal buffer of output
|
||||
state: [u32, ..STATE_WORDS], // Initial state
|
||||
index: uint, // Index into state
|
||||
}
|
||||
|
||||
impl Copy for ChaChaRng {}
|
||||
|
||||
static EMPTY: ChaChaRng = ChaChaRng {
|
||||
buffer: [0, ..STATE_WORDS],
|
||||
state: [0, ..STATE_WORDS],
|
||||
|
@ -10,7 +10,6 @@
|
||||
|
||||
//! The exponential distribution.
|
||||
|
||||
use core::kinds::Copy;
|
||||
use core::num::Float;
|
||||
|
||||
use {Rng, Rand};
|
||||
@ -30,10 +29,9 @@ use distributions::{ziggurat, ziggurat_tables, Sample, IndependentSample};
|
||||
/// Generate Normal Random
|
||||
/// Samples*](http://www.doornik.com/research/ziggurat.pdf). Nuffield
|
||||
/// College, Oxford
|
||||
#[deriving(Copy)]
|
||||
pub struct Exp1(pub f64);
|
||||
|
||||
impl Copy for Exp1 {}
|
||||
|
||||
// This could be done via `-rng.gen::<f64>().ln()` but that is slower.
|
||||
impl Rand for Exp1 {
|
||||
#[inline]
|
||||
@ -69,13 +67,12 @@ impl Rand for Exp1 {
|
||||
/// let v = exp.ind_sample(&mut rand::task_rng());
|
||||
/// println!("{} is from a Exp(2) distribution", v);
|
||||
/// ```
|
||||
#[deriving(Copy)]
|
||||
pub struct Exp {
|
||||
/// `lambda` stored as `1/lambda`, since this is what we scale by.
|
||||
lambda_inverse: f64
|
||||
}
|
||||
|
||||
impl Copy for Exp {}
|
||||
|
||||
impl Exp {
|
||||
/// Construct a new `Exp` with the given shape parameter
|
||||
/// `lambda`. Panics if `lambda <= 0`.
|
||||
|
@ -10,7 +10,6 @@
|
||||
|
||||
//! The normal and derived distributions.
|
||||
|
||||
use core::kinds::Copy;
|
||||
use core::num::Float;
|
||||
|
||||
use {Rng, Rand, Open01};
|
||||
@ -29,10 +28,9 @@ use distributions::{ziggurat, ziggurat_tables, Sample, IndependentSample};
|
||||
/// Generate Normal Random
|
||||
/// Samples*](http://www.doornik.com/research/ziggurat.pdf). Nuffield
|
||||
/// College, Oxford
|
||||
#[deriving(Copy)]
|
||||
pub struct StandardNormal(pub f64);
|
||||
|
||||
impl Copy for StandardNormal {}
|
||||
|
||||
impl Rand for StandardNormal {
|
||||
fn rand<R:Rng>(rng: &mut R) -> StandardNormal {
|
||||
#[inline]
|
||||
@ -86,13 +84,12 @@ impl Rand for StandardNormal {
|
||||
/// let v = normal.ind_sample(&mut rand::task_rng());
|
||||
/// println!("{} is from a N(2, 9) distribution", v)
|
||||
/// ```
|
||||
#[deriving(Copy)]
|
||||
pub struct Normal {
|
||||
mean: f64,
|
||||
std_dev: f64,
|
||||
}
|
||||
|
||||
impl Copy for Normal {}
|
||||
|
||||
impl Normal {
|
||||
/// Construct a new `Normal` distribution with the given mean and
|
||||
/// standard deviation.
|
||||
@ -135,12 +132,11 @@ impl IndependentSample<f64> for Normal {
|
||||
/// let v = log_normal.ind_sample(&mut rand::task_rng());
|
||||
/// println!("{} is from an ln N(2, 9) distribution", v)
|
||||
/// ```
|
||||
#[deriving(Copy)]
|
||||
pub struct LogNormal {
|
||||
norm: Normal
|
||||
}
|
||||
|
||||
impl Copy for LogNormal {}
|
||||
|
||||
impl LogNormal {
|
||||
/// Construct a new `LogNormal` distribution with the given mean
|
||||
/// and standard deviation.
|
||||
|
@ -29,6 +29,7 @@ const RAND_SIZE_UINT: uint = 1 << (RAND_SIZE_LEN as uint);
|
||||
///
|
||||
/// [1]: Bob Jenkins, [*ISAAC: A fast cryptographic random number
|
||||
/// generator*](http://www.burtleburtle.net/bob/rand/isaacafa.html)
|
||||
#[deriving(Copy)]
|
||||
pub struct IsaacRng {
|
||||
cnt: u32,
|
||||
rsl: [u32, ..RAND_SIZE_UINT],
|
||||
@ -38,8 +39,6 @@ pub struct IsaacRng {
|
||||
c: u32
|
||||
}
|
||||
|
||||
impl Copy for IsaacRng {}
|
||||
|
||||
static EMPTY: IsaacRng = IsaacRng {
|
||||
cnt: 0,
|
||||
rsl: [0, ..RAND_SIZE_UINT],
|
||||
@ -265,6 +264,7 @@ const RAND_SIZE_64: uint = 1 << RAND_SIZE_64_LEN;
|
||||
///
|
||||
/// [1]: Bob Jenkins, [*ISAAC: A fast cryptographic random number
|
||||
/// generator*](http://www.burtleburtle.net/bob/rand/isaacafa.html)
|
||||
#[deriving(Copy)]
|
||||
pub struct Isaac64Rng {
|
||||
cnt: uint,
|
||||
rsl: [u64, .. RAND_SIZE_64],
|
||||
@ -274,8 +274,6 @@ pub struct Isaac64Rng {
|
||||
c: u64,
|
||||
}
|
||||
|
||||
impl Copy for Isaac64Rng {}
|
||||
|
||||
static EMPTY_64: Isaac64Rng = Isaac64Rng {
|
||||
cnt: 0,
|
||||
rsl: [0, .. RAND_SIZE_64],
|
||||
|
@ -501,6 +501,7 @@ pub struct Closed01<F>(pub F);
|
||||
#[cfg(not(test))]
|
||||
mod std {
|
||||
pub use core::{option, fmt}; // panic!()
|
||||
pub use core::kinds;
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
@ -133,10 +133,9 @@ pub trait Reseeder<R> {
|
||||
|
||||
/// Reseed an RNG using a `Default` instance. This reseeds by
|
||||
/// replacing the RNG with the result of a `Default::default` call.
|
||||
#[deriving(Copy)]
|
||||
pub struct ReseedWithDefault;
|
||||
|
||||
impl Copy for ReseedWithDefault {}
|
||||
|
||||
impl<R: Rng + Default> Reseeder<R> for ReseedWithDefault {
|
||||
fn reseed(&mut self, rng: &mut R) {
|
||||
*rng = Default::default();
|
||||
|
Loading…
x
Reference in New Issue
Block a user