diff options
| author | bors <bors@rust-lang.org> | 2013-04-24 06:48:50 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-04-24 06:48:50 -0700 |
| commit | e26f992d5e199a1ff8c26733650d254d63be066a (patch) | |
| tree | c1aa3ef0f5e49f777912683ae95144541dd07cd1 /src/libstd | |
| parent | c8ac057545f7b2edf1e488aa4562138a6ed7a096 (diff) | |
| parent | 9860fe10a19cc4997e58861df905f8dbe4de3c5b (diff) | |
| download | rust-e26f992d5e199a1ff8c26733650d254d63be066a.tar.gz rust-e26f992d5e199a1ff8c26733650d254d63be066a.zip | |
auto merge of #6036 : huonw/rust/core-less-at, r=nikomatsakis
From a cursory `git grep` this removes the last part of `core` that requires on `@` (other than `io` and the task local data section). It renames `RandRes` to ~~StdRng~~ `IsaacRng` and `XorShiftState` to `XorShiftRng` as well as moving their constructors to static methods. To go with this, it adds `rng()` which is designed to be used when the programmer just wants a random number generator, without caring about which exact algorithm is being used. It also removes all the `gen_int`, `gen_uint`, `gen_char` (etc) methods on `RngUtil` (by moving the defintions to the actual `Rand` instances). The replacement is using `RngUtil::gen`, either type-inferred or with an annotation (`rng.gen::<uint>()`). I tried to have the `Rng` and `RngUtil` traits exported by `core::prelude` (since `core::rand` (except for `random()`) is useless without them), but this caused [an explosion of (seemingly unrelated) `error: unresolved import`'s](https://gist.github.com/5451839).
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/bitv.rs | 5 | ||||
| -rw-r--r-- | src/libstd/sort.rs | 45 | ||||
| -rw-r--r-- | src/libstd/tempfile.rs | 4 | ||||
| -rw-r--r-- | src/libstd/test.rs | 19 | ||||
| -rw-r--r-- | src/libstd/timer.rs | 8 | ||||
| -rw-r--r-- | src/libstd/treemap.rs | 7 |
6 files changed, 27 insertions, 61 deletions
diff --git a/src/libstd/bitv.rs b/src/libstd/bitv.rs index d1f6bf982a7..8bfa2013950 100644 --- a/src/libstd/bitv.rs +++ b/src/libstd/bitv.rs @@ -876,6 +876,7 @@ mod tests { use core::uint; use core::vec; use core::rand; + use core::rand::Rng; static bench_bits : uint = 1 << 14; @@ -1424,9 +1425,9 @@ mod tests { assert!(a.capacity() == uint::bits); } - fn rng() -> @rand::Rng { + fn rng() -> rand::IsaacRng { let seed = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]; - rand::seeded_rng(seed) + rand::IsaacRng::new_seeded(seed) } #[bench] diff --git a/src/libstd/sort.rs b/src/libstd/sort.rs index febaea637ef..db6efdf3f52 100644 --- a/src/libstd/sort.rs +++ b/src/libstd/sort.rs @@ -902,12 +902,8 @@ mod tests { #[cfg(test)] mod test_tim_sort { use core::prelude::*; - use sort::tim_sort; - use core::rand::RngUtil; - use core::rand; - use core::vec; struct CVal { val: float, @@ -915,8 +911,8 @@ mod test_tim_sort { impl Ord for CVal { fn lt(&self, other: &CVal) -> bool { - let rng = rand::Rng(); - if rng.gen_float() > 0.995 { fail!(~"It's happening!!!"); } + let rng = rand::rng(); + if rng.gen::<float>() > 0.995 { fail!(~"It's happening!!!"); } (*self).val < other.val } fn le(&self, other: &CVal) -> bool { (*self).val <= other.val } @@ -964,10 +960,9 @@ mod test_tim_sort { #[should_fail] #[cfg(unix)] fn crash_test() { - let rng = rand::Rng(); + let rng = rand::rng(); let mut arr = do vec::from_fn(1000) |_i| { - let randVal = rng.gen_float(); - CVal { val: randVal } + CVal { val: rng.gen() } }; tim_sort(arr); @@ -985,10 +980,9 @@ mod test_tim_sort { #[test] fn test_bad_Ord_impl() { - let rng = rand::Rng(); + let rng = rand::rng(); let mut arr = do vec::from_fn(500) |_i| { - let randVal = rng.gen_uint(); - DVal { val: randVal } + DVal { val: rng.gen() } }; tim_sort(arr); @@ -998,14 +992,8 @@ mod test_tim_sort { #[cfg(test)] mod big_tests { use core::prelude::*; - use sort::*; - use core::rand::RngUtil; - use core::rand; - use core::task; - use core::uint; - use core::vec; #[test] fn test_unique() { @@ -1045,14 +1033,13 @@ mod big_tests { } } - let rng = rand::Rng(); + let rng = rand::rng(); for uint::range(lo, hi) |i| { let n = 1 << i; - let arr = do vec::from_fn(n) |_i| { - rng.gen_float() + let mut arr: ~[float] = do vec::from_fn(n) |_i| { + rng.gen() }; - let mut arr = arr; tim_sort(arr); // *sort isSorted(arr); @@ -1076,7 +1063,7 @@ mod big_tests { let size = arr.len(); let mut idx = 1; while idx <= 10 { - arr[size-idx] = rng.gen_float(); + arr[size-idx] = rng.gen(); idx += 1; } } @@ -1085,7 +1072,7 @@ mod big_tests { for (n/100).times { let idx = rng.gen_uint_range(0, n); - arr[idx] = rng.gen_float(); + arr[idx] = rng.gen(); } tim_sort(arr); isSorted(arr); @@ -1117,12 +1104,12 @@ mod big_tests { } } - let rng = rand::Rng(); + let rng = rand::rng(); for uint::range(lo, hi) |i| { let n = 1 << i; - let arr = do vec::from_fn(n) |_i| { - @rng.gen_float() + let arr: ~[@float] = do vec::from_fn(n) |_i| { + @rng.gen() }; let mut arr = arr; @@ -1148,7 +1135,7 @@ mod big_tests { let size = arr.len(); let mut idx = 1; while idx <= 10 { - arr[size-idx] = @rng.gen_float(); + arr[size-idx] = @rng.gen(); idx += 1; } } @@ -1157,7 +1144,7 @@ mod big_tests { for (n/100).times { let idx = rng.gen_uint_range(0, n); - arr[idx] = @rng.gen_float(); + arr[idx] = @rng.gen(); } tim_sort(arr); isSorted(arr); diff --git a/src/libstd/tempfile.rs b/src/libstd/tempfile.rs index 895ccbc820b..c9bcb3b8952 100644 --- a/src/libstd/tempfile.rs +++ b/src/libstd/tempfile.rs @@ -10,13 +10,11 @@ //! Temporary files and directories -use core::os; use core::prelude::*; use core::rand::RngUtil; -use core::rand; pub fn mkdtemp(tmpdir: &Path, suffix: &str) -> Option<Path> { - let r = rand::Rng(); + let r = rand::rng(); for 1000.times { let p = tmpdir.push(r.gen_str(16) + suffix); if os::make_dir(&p, 0x1c0) { // 700 diff --git a/src/libstd/test.rs b/src/libstd/test.rs index addc1da6394..f82cc25e0f6 100644 --- a/src/libstd/test.rs +++ b/src/libstd/test.rs @@ -19,20 +19,9 @@ use getopts; use sort; use term; -use core::cmp::Eq; - use core::to_str::ToStr; -use core::either::Either; -use core::either; -use core::io::WriterUtil; -use core::io; use core::comm::{stream, SharedChan}; -use core::option; use core::prelude::*; -use core::result; -use core::str; -use core::task; -use core::vec; pub mod rustrt { use core::libc::size_t; @@ -608,12 +597,8 @@ pub mod bench { use time::precise_time_ns; use test::{BenchHarness, BenchSamples}; use stats::Stats; - - use core::num; + use core::prelude::*; use core::rand::RngUtil; - use core::rand; - use core::u64; - use core::vec; pub impl BenchHarness { @@ -705,7 +690,7 @@ pub mod bench { // not met, it may run as long as the Go algorithm. pub fn auto_bench(&mut self, f: &fn(&mut BenchHarness)) -> ~[f64] { - let rng = rand::Rng(); + let rng = rand::rng(); let mut magnitude = 10; let mut prev_madp = 0.0; diff --git a/src/libstd/timer.rs b/src/libstd/timer.rs index e862fe6077c..1e48ce5aa6f 100644 --- a/src/libstd/timer.rs +++ b/src/libstd/timer.rs @@ -175,11 +175,7 @@ mod test { use timer::*; use uv; - - use core::iter; use core::rand::RngUtil; - use core::rand; - use core::task; use core::pipes::{stream, SharedChan}; #[test] @@ -220,7 +216,7 @@ mod test { let hl_loop_clone = hl_loop.clone(); do task::spawn { use core::rand::*; - let rng = Rng(); + let rng = rng(); for iter::repeat(times) { sleep(&hl_loop_clone, rng.next() as uint % maxms); } @@ -277,7 +273,7 @@ mod test { let hl_loop = uv::global_loop::get(); for iter::repeat(times as uint) { - let expected = rand::Rng().gen_str(16u); + let expected = rand::rng().gen_str(16u); let (test_po, test_ch) = stream::<~str>(); let hl_loop_clone = hl_loop.clone(); do task::spawn() { diff --git a/src/libstd/treemap.rs b/src/libstd/treemap.rs index ac887c7fdc4..020f4daefd9 100644 --- a/src/libstd/treemap.rs +++ b/src/libstd/treemap.rs @@ -698,7 +698,6 @@ mod test_treemap { use core::iterator::*; use super::*; use core::rand::RngUtil; - use core::rand; #[test] fn find_empty() { @@ -835,12 +834,12 @@ mod test_treemap { check_equal(ctrl, &map); assert!(map.find(&5).is_none()); - let rng = rand::seeded_rng(&[42]); + let rng = rand::IsaacRng::new_seeded(&[42]); for 3.times { for 90.times { - let k = rng.gen_int(); - let v = rng.gen_int(); + let k = rng.gen(); + let v = rng.gen(); if !ctrl.contains(&(k, v)) { assert!(map.insert(k, v)); ctrl.push((k, v)); |
