about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librand/chacha.rs3
-rw-r--r--src/librand/distributions/exponential.rs7
-rw-r--r--src/librand/distributions/normal.rs10
-rw-r--r--src/librand/isaac.rs6
-rw-r--r--src/librand/lib.rs1
-rw-r--r--src/librand/reseeding.rs3
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 @@ 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],
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 @@ 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`.
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 @@ 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.
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 @@ 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],
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 @@ pub struct Closed01<F>(pub F);
 #[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<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();