about summary refs log tree commit diff
path: root/src/lib
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-10-29 17:23:58 -0700
committerBrian Anderson <banderson@mozilla.com>2011-10-29 18:14:08 -0700
commit2e0593d9999a50c74ea2962e53b8f5686037fd36 (patch)
tree3dea3cf2263d855333880d85df6fd01f2c66dd3e /src/lib
parentda064ef884994df1889d6a083349fb0bf6954400 (diff)
stdlib: Add vec::concat to concatenate a vector of vectors
Compare to str::concat
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/vec.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lib/vec.rs b/src/lib/vec.rs
index 548afaa73bc..f459a75270a 100644
--- a/src/lib/vec.rs
+++ b/src/lib/vec.rs
@@ -447,6 +447,19 @@ fn filter<T>(f: block(T) -> bool, v: [mutable? T]) -> [T] {
 }
 
 /*
+Function: concat
+
+Concatenate a vector of vectors. Flattens a vector of vectors of T into
+a single vector of T.
+*/
+fn concat<T>(v: [mutable? [mutable? T]]) -> [T] {
+    // FIXME: So much copying
+    let new: [T] = [];
+    for inner: [T] in v { new += inner; }
+    ret new;
+}
+
+/*
 Function: foldl
 
 Reduce a vector from left to right