]> git.lizzy.rs Git - rust.git/commitdiff
Remove nearly all uses of `~[]` from libtest.
authorHuon Wilson <dbau.pp+github@gmail.com>
Fri, 21 Mar 2014 12:17:33 +0000 (23:17 +1100)
committerHuon Wilson <dbau.pp+github@gmail.com>
Fri, 21 Mar 2014 14:08:57 +0000 (01:08 +1100)
Deny further uses, with explicit allows on a few specific functions.

src/libtest/lib.rs
src/libtest/stats.rs

index 27f9a2174ced37b068b24df774f955e021fd5474..96313c26f1f9bdfb69921d009e56f0b5a24ff8ef 100644 (file)
@@ -33,7 +33,7 @@
       html_root_url = "http://static.rust-lang.org/doc/master")];
 
 #[feature(asm, macro_rules)];
-#[allow(deprecated_owned_vector)]; // NOTE: remove after stage0
+#[deny(deprecated_owned_vector)];
 
 extern crate collections;
 extern crate getopts;
@@ -363,15 +363,10 @@ pub fn opt_shard(maybestr: Option<~str>) -> Option<(uint,uint)> {
     match maybestr {
         None => None,
         Some(s) => {
-            let vector = s.split('.').to_owned_vec();
-            if vector.len() == 2 {
-                match (from_str::<uint>(vector[0]),
-                       from_str::<uint>(vector[1])) {
-                    (Some(a), Some(b)) => Some((a, b)),
-                    _ => None
-                }
-            } else {
-                None
+            let mut it = s.split('.');
+            match (it.next().and_then(from_str), it.next().and_then(from_str), it.next()) {
+                (Some(a), Some(b), None) => Some((a, b)),
+                _ => None,
             }
         }
     }
@@ -950,6 +945,7 @@ pub fn run_test(force_ignore: bool,
         return;
     }
 
+    #[allow(deprecated_owned_vector)]
     fn run_test_inner(desc: TestDesc,
                       monitor_ch: Sender<MonitorMsg>,
                       testfn: proc()) {
index 120b790d46753234ed31fcd52b43bb5678a5e53b..8a3881e801a7805149cd76100b6467af4edb865a 100644 (file)
@@ -168,6 +168,7 @@ pub fn new(samples: &[f64]) -> Summary {
 impl<'a> Stats for &'a [f64] {
 
     // FIXME #11059 handle NaN, inf and overflow
+    #[allow(deprecated_owned_vector)]
     fn sum(self) -> f64 {
         let mut partials : ~[f64] = ~[];
 
@@ -246,10 +247,10 @@ fn std_dev_pct(self) -> f64 {
 
     fn median_abs_dev(self) -> f64 {
         let med = self.median();
-        let abs_devs = self.map(|&v| num::abs(med - v));
+        let abs_devs: Vec<f64> = self.iter().map(|&v| num::abs(med - v)).collect();
         // This constant is derived by smarter statistics brains than me, but it is
         // consistent with how R and other packages treat the MAD.
-        abs_devs.median() * 1.4826
+        abs_devs.as_slice().median() * 1.4826
     }
 
     fn median_abs_dev_pct(self) -> f64 {
@@ -257,17 +258,17 @@ fn median_abs_dev_pct(self) -> f64 {
     }
 
     fn percentile(self, pct: f64) -> f64 {
-        let mut tmp = self.to_owned();
-        f64_sort(tmp);
-        percentile_of_sorted(tmp, pct)
+        let mut tmp = Vec::from_slice(self);
+        f64_sort(tmp.as_mut_slice());
+        percentile_of_sorted(tmp.as_slice(), pct)
     }
 
     fn quartiles(self) -> (f64,f64,f64) {
-        let mut tmp = self.to_owned();
-        f64_sort(tmp);
-        let a = percentile_of_sorted(tmp, 25.0);
-        let b = percentile_of_sorted(tmp, 50.0);
-        let c = percentile_of_sorted(tmp, 75.0);
+        let mut tmp = Vec::from_slice(self);
+        f64_sort(tmp.as_mut_slice());
+        let a = percentile_of_sorted(tmp.as_slice(), 25.0);
+        let b = percentile_of_sorted(tmp.as_slice(), 50.0);
+        let c = percentile_of_sorted(tmp.as_slice(), 75.0);
         (a,b,c)
     }
 
@@ -308,10 +309,10 @@ fn percentile_of_sorted(sorted_samples: &[f64],
 ///
 /// See: http://en.wikipedia.org/wiki/Winsorising
 pub fn winsorize(samples: &mut [f64], pct: f64) {
-    let mut tmp = samples.to_owned();
-    f64_sort(tmp);
-    let lo = percentile_of_sorted(tmp, pct);
-    let hi = percentile_of_sorted(tmp, 100.0-pct);
+    let mut tmp = Vec::from_slice(samples);
+    f64_sort(tmp.as_mut_slice());
+    let lo = percentile_of_sorted(tmp.as_slice(), pct);
+    let hi = percentile_of_sorted(tmp.as_slice(), 100.0-pct);
     for samp in samples.mut_iter() {
         if *samp > hi {
             *samp = hi
@@ -1009,6 +1010,7 @@ fn test_unif25() {
 
     #[test]
     fn test_boxplot_nonpositive() {
+        #[allow(deprecated_owned_vector)]
         fn t(s: &Summary, expected: ~str) {
             use std::io::MemWriter;
             let mut m = MemWriter::new();
@@ -1035,7 +1037,6 @@ fn test_sum_f64_between_ints_that_sum_to_0() {
 #[cfg(test)]
 mod bench {
     use BenchHarness;
-    use std::slice;
     use stats::Stats;
 
     #[bench]
@@ -1047,10 +1048,10 @@ pub fn sum_three_items(bh: &mut BenchHarness) {
     #[bench]
     pub fn sum_many_f64(bh: &mut BenchHarness) {
         let nums = [-1e30, 1e60, 1e30, 1.0, -1e60];
-        let v = slice::from_fn(500, |i| nums[i%5]);
+        let v = Vec::from_fn(500, |i| nums[i%5]);
 
         bh.iter(|| {
-            v.sum();
+            v.as_slice().sum();
         })
     }
 }