From a18d090c3cf6223b90c5a39e66ddef3e1932c7c7 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sun, 14 Dec 2014 22:45:18 -0500 Subject: [PATCH] librand: use `#[deriving(Copy)]` --- src/librand/chacha.rs | 3 +-- src/librand/distributions/exponential.rs | 7 ++----- src/librand/distributions/normal.rs | 10 +++------- src/librand/isaac.rs | 6 ++---- src/librand/lib.rs | 1 + src/librand/reseeding.rs | 3 +-- 6 files changed, 10 insertions(+), 20 deletions(-) diff --git a/src/librand/chacha.rs b/src/librand/chacha.rs index 5cbc5a0a61c..6fc92e1e94f 100644 --- a/src/librand/chacha.rs +++ b/src/librand/chacha.rs @@ -29,14 +29,13 @@ /// [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], diff --git a/src/librand/distributions/exponential.rs b/src/librand/distributions/exponential.rs index 9a9f31e9339..431a530726a 100644 --- a/src/librand/distributions/exponential.rs +++ b/src/librand/distributions/exponential.rs @@ -10,7 +10,6 @@ //! The exponential distribution. -use core::kinds::Copy; use core::num::Float; use {Rng, Rand}; @@ -30,10 +29,9 @@ /// 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::().ln()` but that is slower. impl Rand for Exp1 { #[inline] @@ -69,13 +67,12 @@ fn zero_case(rng: &mut R, _u: f64) -> f64 { /// 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`. diff --git a/src/librand/distributions/normal.rs b/src/librand/distributions/normal.rs index f5261f1db82..16413af6267 100644 --- a/src/librand/distributions/normal.rs +++ b/src/librand/distributions/normal.rs @@ -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 @@ /// 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(rng: &mut R) -> StandardNormal { #[inline] @@ -86,13 +84,12 @@ fn zero_case(rng: &mut R, u: f64) -> f64 { /// 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 @@ fn ind_sample(&self, rng: &mut R) -> f64 { /// 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. diff --git a/src/librand/isaac.rs b/src/librand/isaac.rs index 2499d7f529f..3cb1f51a6a8 100644 --- a/src/librand/isaac.rs +++ b/src/librand/isaac.rs @@ -29,6 +29,7 @@ /// /// [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 @@ fn rand(other: &mut R) -> IsaacRng { /// /// [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], diff --git a/src/librand/lib.rs b/src/librand/lib.rs index dfcdad481a9..514ff81da51 100644 --- a/src/librand/lib.rs +++ b/src/librand/lib.rs @@ -501,6 +501,7 @@ fn rand(rng: &mut R) -> XorShiftRng { #[cfg(not(test))] mod std { pub use core::{option, fmt}; // panic!() + pub use core::kinds; } #[cfg(test)] diff --git a/src/librand/reseeding.rs b/src/librand/reseeding.rs index 46ee67940f2..94a11c040e4 100644 --- a/src/librand/reseeding.rs +++ b/src/librand/reseeding.rs @@ -133,10 +133,9 @@ pub trait Reseeder { /// 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 Reseeder for ReseedWithDefault { fn reseed(&mut self, rng: &mut R) { *rng = Default::default(); -- GitLab