about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2015-01-05 18:37:18 -0800
committerAlex Crichton <alex@alexcrichton.com>2015-01-05 18:37:18 -0800
commitca40fe0f5e8085070f1bb678cba1ea85a09942b1 (patch)
tree29b7ce86a3c8734e3d70b08694dc1a54033447fa /src/libstd
parent38d81baec8c02847526f5c440434b59b22ebeaa5 (diff)
parent6ca1f0c6ea61760138c7e3cb4c14fa3be71c7414 (diff)
downloadrust-ca40fe0f5e8085070f1bb678cba1ea85a09942b1.tar.gz
rust-ca40fe0f5e8085070f1bb678cba1ea85a09942b1.zip
rollup merge of #20483: nagisa/rng-copy
* Implement (derive) `Clone` for `ChaChaRng`, `Isaac*Rng`, `StdRng` and `ThreadRng`;
* Derive `XorShiftRng` `Clone` implementation instead of implementing it explicitly.

`OsRng` is the only Rng which does not implement `Clone` or `Copy` after this patch because of its dependence on `Reader`.

r? @huonw I guess?
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/rand/mod.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libstd/rand/mod.rs b/src/libstd/rand/mod.rs
index aa28c8266d1..cadaae5de5c 100644
--- a/src/libstd/rand/mod.rs
+++ b/src/libstd/rand/mod.rs
@@ -245,7 +245,7 @@ pub mod reader;
 
 /// The standard RNG. This is designed to be efficient on the current
 /// platform.
-#[derive(Copy)]
+#[deriving(Copy, Clone)]
 pub struct StdRng {
     rng: IsaacWordRng,
 }
@@ -322,6 +322,7 @@ static THREAD_RNG_RESEED_THRESHOLD: uint = 32_768;
 type ThreadRngInner = reseeding::ReseedingRng<StdRng, ThreadRngReseeder>;
 
 /// The thread-local RNG.
+#[deriving(Clone)]
 pub struct ThreadRng {
     rng: Rc<RefCell<ThreadRngInner>>,
 }