summary refs log tree commit diff
path: root/src/libstd/vec.rs
diff options
context:
space:
mode:
authorDaniel Micay <danielmicay@gmail.com>2013-06-24 01:21:32 -0400
committerDaniel Micay <danielmicay@gmail.com>2013-06-24 01:35:15 -0400
commit3ab5ec4b7c854290ad1bc5192c70cbc0856a5fa7 (patch)
treebd554d39b65fb6deda79a06a17ad258b189c91b1 /src/libstd/vec.rs
parent8779be39e1a6e064d75cc32ad3610fad9a4fa9a6 (diff)
downloadrust-3ab5ec4b7c854290ad1bc5192c70cbc0856a5fa7.tar.gz
rust-3ab5ec4b7c854290ad1bc5192c70cbc0856a5fa7.zip
iterator: implement `collect` with FromIterator
This makes it take advantage of the size hint for pre-allocation.
Diffstat (limited to 'src/libstd/vec.rs')
-rw-r--r--src/libstd/vec.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs
index aeb5b000747..dd3c23d1084 100644
--- a/src/libstd/vec.rs
+++ b/src/libstd/vec.rs
@@ -2500,6 +2500,17 @@ impl<T> FromIter<T> for ~[T]{
     }
 }
 
+#[cfg(stage0)]
+impl<A, T: Iterator<A>> FromIterator<A, T> for ~[A] {
+    pub fn from_iterator(iterator: &mut T) -> ~[A] {
+        let mut xs = ~[];
+        for iterator.advance |x| {
+            xs.push(x);
+        }
+        xs
+    }
+}
+
 #[cfg(not(stage0))]
 impl<A, T: Iterator<A>> FromIterator<A, T> for ~[A] {
     pub fn from_iterator(iterator: &mut T) -> ~[A] {