Skip to content

Commit 21273d5

Browse files
committed
auto merge of #13177 : huonw/rust/devec-rand, r=alexcrichton
Remove ~[] from librand, rename Rng.shuffle_mut to .shuffle. See commits.
2 parents c987134 + 846d1c7 commit 21273d5

File tree

10 files changed

+127
-123
lines changed

10 files changed

+127
-123
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
}

0 commit comments

Comments
 (0)