Skip to content

Commit c5d8556

Browse files
committed
rand: remove (almost) all ~[]'s from Vec.
There are a few instances of them in tests which are using functions from std etc. that still are using ~[].
1 parent c987134 commit c5d8556

File tree

10 files changed

+106
-106
lines changed

10 files changed

+106
-106
lines changed

src/libflate/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ mod tests {
112112
for _ in range(0, 20) {
113113
let mut input = ~[];
114114
for _ in range(0, 2000) {
115-
input.push_all(r.choose(words.as_slice()));
115+
input.push_all(r.choose(words.as_slice()).as_slice());
116116
}
117117
debug!("de/inflate of {} bytes of random word-sequences",
118118
input.len());

src/librand/distributions/mod.rs

+40-40
Original file line numberDiff line numberDiff line change
@@ -91,18 +91,18 @@ pub struct Weighted<T> {
9191
/// ```rust
9292
/// use rand::distributions::{Weighted, WeightedChoice, IndependentSample};
9393
///
94-
/// let wc = WeightedChoice::new(~[Weighted { weight: 2, item: 'a' },
95-
/// Weighted { weight: 4, item: 'b' },
96-
/// Weighted { weight: 1, item: 'c' }]);
94+
/// let wc = WeightedChoice::new(vec!(Weighted { weight: 2, item: 'a' },
95+
/// Weighted { weight: 4, item: 'b' },
96+
/// Weighted { weight: 1, item: 'c' }));
9797
/// let mut rng = rand::task_rng();
9898
/// for _ in range(0, 16) {
9999
/// // on average prints 'a' 4 times, 'b' 8 and 'c' twice.
100100
/// println!("{}", wc.ind_sample(&mut rng));
101101
/// }
102102
/// ```
103103
pub struct WeightedChoice<T> {
104-
pub items: ~[Weighted<T>],
105-
pub weight_range: Range<uint>
104+
items: Vec<Weighted<T>>,
105+
weight_range: Range<uint>
106106
}
107107

108108
impl<T: Clone> WeightedChoice<T> {
@@ -112,7 +112,7 @@ impl<T: Clone> WeightedChoice<T> {
112112
/// - `v` is empty
113113
/// - the total weight is 0
114114
/// - the total weight is larger than a `uint` can contain.
115-
pub fn new(mut items: ~[Weighted<T>]) -> WeightedChoice<T> {
115+
pub fn new(mut items: Vec<Weighted<T>>) -> WeightedChoice<T> {
116116
// strictly speaking, this is subsumed by the total weight == 0 case
117117
assert!(!items.is_empty(), "WeightedChoice::new called with no items");
118118

@@ -153,8 +153,8 @@ impl<T: Clone> IndependentSample<T> for WeightedChoice<T> {
153153
let sample_weight = self.weight_range.ind_sample(rng);
154154

155155
// short circuit when it's the first item
156-
if sample_weight < self.items[0].weight {
157-
return self.items[0].item.clone();
156+
if sample_weight < self.items.get(0).weight {
157+
return self.items.get(0).item.clone();
158158
}
159159

160160
let mut idx = 0;
@@ -169,7 +169,7 @@ impl<T: Clone> IndependentSample<T> for WeightedChoice<T> {
169169
// one is exactly the total weight.)
170170
while modifier > 1 {
171171
let i = idx + modifier / 2;
172-
if self.items[i].weight <= sample_weight {
172+
if self.items.get(i).weight <= sample_weight {
173173
// we're small, so look to the right, but allow this
174174
// exact element still.
175175
idx = i;
@@ -182,7 +182,7 @@ impl<T: Clone> IndependentSample<T> for WeightedChoice<T> {
182182
}
183183
modifier /= 2;
184184
}
185-
return self.items[idx + 1].item.clone();
185+
return self.items.get(idx + 1).item.clone();
186186
}
187187
}
188188

@@ -297,54 +297,54 @@ mod tests {
297297
}}
298298
);
299299

300-
t!(~[Weighted { weight: 1, item: 10}], ~[10]);
300+
t!(vec!(Weighted { weight: 1, item: 10}), [10]);
301301

302302
// skip some
303-
t!(~[Weighted { weight: 0, item: 20},
304-
Weighted { weight: 2, item: 21},
305-
Weighted { weight: 0, item: 22},
306-
Weighted { weight: 1, item: 23}],
307-
~[21,21, 23]);
303+
t!(vec!(Weighted { weight: 0, item: 20},
304+
Weighted { weight: 2, item: 21},
305+
Weighted { weight: 0, item: 22},
306+
Weighted { weight: 1, item: 23}),
307+
[21,21, 23]);
308308

309309
// different weights
310-
t!(~[Weighted { weight: 4, item: 30},
311-
Weighted { weight: 3, item: 31}],
312-
~[30,30,30,30, 31,31,31]);
310+
t!(vec!(Weighted { weight: 4, item: 30},
311+
Weighted { weight: 3, item: 31}),
312+
[30,30,30,30, 31,31,31]);
313313

314314
// check that we're binary searching
315315
// correctly with some vectors of odd
316316
// length.
317-
t!(~[Weighted { weight: 1, item: 40},
318-
Weighted { weight: 1, item: 41},
319-
Weighted { weight: 1, item: 42},
320-
Weighted { weight: 1, item: 43},
321-
Weighted { weight: 1, item: 44}],
322-
~[40, 41, 42, 43, 44]);
323-
t!(~[Weighted { weight: 1, item: 50},
324-
Weighted { weight: 1, item: 51},
325-
Weighted { weight: 1, item: 52},
326-
Weighted { weight: 1, item: 53},
327-
Weighted { weight: 1, item: 54},
328-
Weighted { weight: 1, item: 55},
329-
Weighted { weight: 1, item: 56}],
330-
~[50, 51, 52, 53, 54, 55, 56]);
317+
t!(vec!(Weighted { weight: 1, item: 40},
318+
Weighted { weight: 1, item: 41},
319+
Weighted { weight: 1, item: 42},
320+
Weighted { weight: 1, item: 43},
321+
Weighted { weight: 1, item: 44}),
322+
[40, 41, 42, 43, 44]);
323+
t!(vec!(Weighted { weight: 1, item: 50},
324+
Weighted { weight: 1, item: 51},
325+
Weighted { weight: 1, item: 52},
326+
Weighted { weight: 1, item: 53},
327+
Weighted { weight: 1, item: 54},
328+
Weighted { weight: 1, item: 55},
329+
Weighted { weight: 1, item: 56}),
330+
[50, 51, 52, 53, 54, 55, 56]);
331331
}
332332

333333
#[test] #[should_fail]
334334
fn test_weighted_choice_no_items() {
335-
WeightedChoice::<int>::new(~[]);
335+
WeightedChoice::<int>::new(vec!());
336336
}
337337
#[test] #[should_fail]
338338
fn test_weighted_choice_zero_weight() {
339-
WeightedChoice::new(~[Weighted { weight: 0, item: 0},
340-
Weighted { weight: 0, item: 1}]);
339+
WeightedChoice::new(vec!(Weighted { weight: 0, item: 0},
340+
Weighted { weight: 0, item: 1}));
341341
}
342342
#[test] #[should_fail]
343343
fn test_weighted_choice_weight_overflows() {
344344
let x = (-1) as uint / 2; // x + x + 2 is the overflow
345-
WeightedChoice::new(~[Weighted { weight: x, item: 0 },
346-
Weighted { weight: 1, item: 1 },
347-
Weighted { weight: x, item: 2 },
348-
Weighted { weight: 1, item: 3 }]);
345+
WeightedChoice::new(vec!(Weighted { weight: x, item: 0 },
346+
Weighted { weight: 1, item: 1 },
347+
Weighted { weight: x, item: 2 },
348+
Weighted { weight: 1, item: 3 }));
349349
}
350350
}

src/librand/isaac.rs

+18-19
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,6 @@ impl<'a> SeedableRng<&'a [u64]> for Isaac64Rng {
441441
mod test {
442442
use super::{IsaacRng, Isaac64Rng};
443443
use {Rng, SeedableRng, task_rng};
444-
use std::slice;
445444

446445
#[test]
447446
fn test_rng_32_rand_seeded() {
@@ -479,7 +478,7 @@ mod test {
479478
let mut r: IsaacRng = SeedableRng::from_seed(s.as_slice());
480479
let string1 = r.gen_ascii_str(100);
481480

482-
r.reseed(s);
481+
r.reseed(s.as_slice());
483482

484483
let string2 = r.gen_ascii_str(100);
485484
assert_eq!(string1, string2);
@@ -490,7 +489,7 @@ mod test {
490489
let mut r: Isaac64Rng = SeedableRng::from_seed(s.as_slice());
491490
let string1 = r.gen_ascii_str(100);
492491

493-
r.reseed(s);
492+
r.reseed(s.as_slice());
494493

495494
let string2 = r.gen_ascii_str(100);
496495
assert_eq!(string1, string2);
@@ -501,43 +500,43 @@ mod test {
501500
let seed = &[1, 23, 456, 7890, 12345];
502501
let mut ra: IsaacRng = SeedableRng::from_seed(seed);
503502
// Regression test that isaac is actually using the above vector
504-
let v = slice::from_fn(10, |_| ra.next_u32());
503+
let v = Vec::from_fn(10, |_| ra.next_u32());
505504
assert_eq!(v,
506-
~[2558573138, 873787463, 263499565, 2103644246, 3595684709,
507-
4203127393, 264982119, 2765226902, 2737944514, 3900253796]);
505+
vec!(2558573138, 873787463, 263499565, 2103644246, 3595684709,
506+
4203127393, 264982119, 2765226902, 2737944514, 3900253796));
508507

509508
let seed = &[12345, 67890, 54321, 9876];
510509
let mut rb: IsaacRng = SeedableRng::from_seed(seed);
511510
// skip forward to the 10000th number
512511
for _ in range(0, 10000) { rb.next_u32(); }
513512

514-
let v = slice::from_fn(10, |_| rb.next_u32());
513+
let v = Vec::from_fn(10, |_| rb.next_u32());
515514
assert_eq!(v,
516-
~[3676831399, 3183332890, 2834741178, 3854698763, 2717568474,
517-
1576568959, 3507990155, 179069555, 141456972, 2478885421]);
515+
vec!(3676831399, 3183332890, 2834741178, 3854698763, 2717568474,
516+
1576568959, 3507990155, 179069555, 141456972, 2478885421));
518517
}
519518
#[test]
520519
fn test_rng_64_true_values() {
521520
let seed = &[1, 23, 456, 7890, 12345];
522521
let mut ra: Isaac64Rng = SeedableRng::from_seed(seed);
523522
// Regression test that isaac is actually using the above vector
524-
let v = slice::from_fn(10, |_| ra.next_u64());
523+
let v = Vec::from_fn(10, |_| ra.next_u64());
525524
assert_eq!(v,
526-
~[547121783600835980, 14377643087320773276, 17351601304698403469,
527-
1238879483818134882, 11952566807690396487, 13970131091560099343,
528-
4469761996653280935, 15552757044682284409, 6860251611068737823,
529-
13722198873481261842]);
525+
vec!(547121783600835980, 14377643087320773276, 17351601304698403469,
526+
1238879483818134882, 11952566807690396487, 13970131091560099343,
527+
4469761996653280935, 15552757044682284409, 6860251611068737823,
528+
13722198873481261842));
530529

531530
let seed = &[12345, 67890, 54321, 9876];
532531
let mut rb: Isaac64Rng = SeedableRng::from_seed(seed);
533532
// skip forward to the 10000th number
534533
for _ in range(0, 10000) { rb.next_u64(); }
535534

536-
let v = slice::from_fn(10, |_| rb.next_u64());
535+
let v = Vec::from_fn(10, |_| rb.next_u64());
537536
assert_eq!(v,
538-
~[18143823860592706164, 8491801882678285927, 2699425367717515619,
539-
17196852593171130876, 2606123525235546165, 15790932315217671084,
540-
596345674630742204, 9947027391921273664, 11788097613744130851,
541-
10391409374914919106]);
537+
vec!(18143823860592706164, 8491801882678285927, 2699425367717515619,
538+
17196852593171130876, 2606123525235546165, 15790932315217671084,
539+
596345674630742204, 9947027391921273664, 11788097613744130851,
540+
10391409374914919106));
542541
}
543542
}

src/librand/lib.rs

+22-24
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ println!("{:?}", tuple_ptr)
7373
#![feature(macro_rules, managed_boxes, phase)]
7474

7575
#![allow(visible_private_types)] // NOTE: remove after a stage0 snap
76+
#![deny(deprecated_owned_vector)]
7677

7778
#[cfg(test)]
7879
#[phase(syntax, link)] extern crate log;
@@ -82,7 +83,6 @@ use std::io::IoResult;
8283
use std::kinds::marker;
8384
use std::local_data;
8485
use std::str;
85-
use std::slice;
8686

8787
pub use isaac::{IsaacRng, Isaac64Rng};
8888
pub use os::OSRng;
@@ -199,12 +199,12 @@ pub trait Rng {
199199
/// use rand::{task_rng, Rng};
200200
///
201201
/// let mut rng = task_rng();
202-
/// let x: ~[uint] = rng.gen_vec(10);
203-
/// println!("{:?}", x);
204-
/// println!("{:?}", rng.gen_vec::<(f64, bool)>(5));
202+
/// let x: Vec<uint> = rng.gen_vec(10);
203+
/// println!("{}", x);
204+
/// println!("{}", rng.gen_vec::<(f64, bool)>(5));
205205
/// ```
206-
fn gen_vec<T: Rand>(&mut self, len: uint) -> ~[T] {
207-
slice::from_fn(len, |_| self.gen())
206+
fn gen_vec<T: Rand>(&mut self, len: uint) -> Vec<T> {
207+
Vec::from_fn(len, |_| self.gen())
208208
}
209209

210210
/// Generate a random value in the range [`low`, `high`). Fails if
@@ -300,12 +300,11 @@ pub trait Rng {
300300
/// ```rust
301301
/// use rand::{task_rng, Rng};
302302
///
303-
/// println!("{:?}", task_rng().shuffle(~[1,2,3]));
303+
/// println!("{}", task_rng().shuffle(vec!(1,2,3)));
304304
/// ```
305-
fn shuffle<T>(&mut self, values: ~[T]) -> ~[T] {
306-
let mut v = values;
307-
self.shuffle_mut(v);
308-
v
305+
fn shuffle<T>(&mut self, mut values: Vec<T>) -> Vec<T> {
306+
self.shuffle_mut(values.as_mut_slice());
307+
values
309308
}
310309

311310
/// Shuffle a mutable vector in place.
@@ -341,10 +340,10 @@ pub trait Rng {
341340
///
342341
/// let mut rng = task_rng();
343342
/// let sample = rng.sample(range(1, 100), 5);
344-
/// println!("{:?}", sample);
343+
/// println!("{}", sample);
345344
/// ```
346-
fn sample<A, T: Iterator<A>>(&mut self, iter: T, n: uint) -> ~[A] {
347-
let mut reservoir : ~[A] = slice::with_capacity(n);
345+
fn sample<A, T: Iterator<A>>(&mut self, iter: T, n: uint) -> Vec<A> {
346+
let mut reservoir = Vec::with_capacity(n);
348347
for (i, elem) in iter.enumerate() {
349348
if i < n {
350349
reservoir.push(elem);
@@ -353,7 +352,7 @@ pub trait Rng {
353352

354353
let k = self.gen_range(0, i + 1);
355354
if k < reservoir.len() {
356-
reservoir[k] = elem
355+
*reservoir.get_mut(k) = elem
357356
}
358357
}
359358
reservoir
@@ -695,7 +694,6 @@ pub struct Closed01<F>(F);
695694

696695
#[cfg(test)]
697696
mod test {
698-
use std::slice;
699697
use super::{Rng, task_rng, random, SeedableRng, StdRng};
700698

701699
struct ConstRng { i: u64 }
@@ -714,8 +712,8 @@ mod test {
714712
let lengths = [0, 1, 2, 3, 4, 5, 6, 7,
715713
80, 81, 82, 83, 84, 85, 86, 87];
716714
for &n in lengths.iter() {
717-
let mut v = slice::from_elem(n, 0u8);
718-
r.fill_bytes(v);
715+
let mut v = Vec::from_elem(n, 0u8);
716+
r.fill_bytes(v.as_mut_slice());
719717

720718
// use this to get nicer error messages.
721719
for (i, &byte) in v.iter().enumerate() {
@@ -813,16 +811,16 @@ mod test {
813811
#[test]
814812
fn test_shuffle() {
815813
let mut r = task_rng();
816-
let empty: ~[int] = ~[];
817-
assert_eq!(r.shuffle(~[]), empty);
818-
assert_eq!(r.shuffle(~[1, 1, 1]), ~[1, 1, 1]);
814+
let empty = Vec::<int>::new();
815+
assert_eq!(r.shuffle(vec!()), empty);
816+
assert_eq!(r.shuffle(vec!(1, 1, 1)), vec!(1, 1, 1));
819817
}
820818

821819
#[test]
822820
fn test_task_rng() {
823821
let mut r = task_rng();
824822
r.gen::<int>();
825-
assert_eq!(r.shuffle(~[1, 1, 1]), ~[1, 1, 1]);
823+
assert_eq!(r.shuffle(vec!(1, 1, 1)), vec!(1, 1, 1));
826824
assert_eq!(r.gen_range(0u, 1u), 0u);
827825
}
828826

@@ -844,7 +842,7 @@ mod test {
844842
let max_val = 100;
845843

846844
let mut r = task_rng();
847-
let vals = range(min_val, max_val).collect::<~[int]>();
845+
let vals = range(min_val, max_val).collect::<Vec<int>>();
848846
let small_sample = r.sample(vals.iter(), 5);
849847
let large_sample = r.sample(vals.iter(), vals.len() + 5);
850848

@@ -870,7 +868,7 @@ mod test {
870868
let mut r: StdRng = SeedableRng::from_seed(s.as_slice());
871869
let string1 = r.gen_ascii_str(100);
872870

873-
r.reseed(s);
871+
r.reseed(s.as_slice());
874872

875873
let string2 = r.gen_ascii_str(100);
876874
assert_eq!(string1, string2);

src/librand/os.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ mod test {
204204
#[test]
205205
fn test_os_rng_tasks() {
206206

207-
let mut txs = ~[];
207+
let mut txs = vec!();
208208
for _ in range(0, 20) {
209209
let (tx, rx) = channel();
210210
txs.push(tx);

src/librand/reader.rs

+1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ impl<R: Reader> Rng for ReaderRng<R> {
6868
}
6969

7070
#[cfg(test)]
71+
#[allow(deprecated_owned_vector)]
7172
mod test {
7273
use super::ReaderRng;
7374
use std::io::MemReader;

0 commit comments

Comments
 (0)