about summary refs log tree commit diff
path: root/src/libextra
diff options
context:
space:
mode:
authorMihnea Dobrescu-Balaur <mihnea@linux.com>2013-08-07 09:46:09 -0700
committerMihnea Dobrescu-Balaur <mihnea@linux.com>2013-08-07 09:46:09 -0700
commit17c12bbd1b2fdfc958f12527538acb787cc2d89a (patch)
treed216344b702a5bcfc7b575fed72066c3d9d0b4f7 /src/libextra
parent597b3fd03fa1213ede610088569decd390d2c2fb (diff)
downloadrust-17c12bbd1b2fdfc958f12527538acb787cc2d89a.tar.gz
rust-17c12bbd1b2fdfc958f12527538acb787cc2d89a.zip
Add frequency count to extra::stat. #8281
Diffstat (limited to 'src/libextra')
-rw-r--r--src/libextra/stats.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libextra/stats.rs b/src/libextra/stats.rs
index 68d5af43688..9238034cba3 100644
--- a/src/libextra/stats.rs
+++ b/src/libextra/stats.rs
@@ -10,6 +10,7 @@
 
 use sort;
 use std::cmp;
+use std::hashmap;
 use std::io;
 use std::num;
 
@@ -352,6 +353,16 @@ pub fn write_boxplot(w: @io::Writer, s: &Summary, width_hint: uint) {
     w.write_str(histr);
 }
 
+/// Returns a HashMap with the number of occurences of every element in the
+/// sequence that the iterator exposes.
+pub fn freq_count<T: Iterator<U>, U: Eq+Hash>(mut iter: T) -> hashmap::HashMap<U, uint> {
+    let mut map = hashmap::HashMap::new::<U, uint>();
+    for elem in iter {
+        map.insert_or_update_with(elem, 1, |_, count| *count += 1);
+    }
+    map
+}
+
 // Test vectors generated from R, using the script src/etc/stat-test-vectors.r.
 
 #[cfg(test)]