Skip to content

Commit eee6775

Browse files
committed
Implement consuming iterators for ~[], remove vec::{consume, consume_reverse, map_consume}.
1 parent 55f1555 commit eee6775

File tree

14 files changed

+123
-158
lines changed

14 files changed

+123
-158
lines changed

doc/tutorial-container.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ impl Iterator<int> for ZeroStream {
108108
## Container iterators
109109
110110
Containers implement iteration over the contained elements by returning an
111-
iterator object. For example, vectors have four iterators available:
111+
iterator object. For example, vector slices have four iterators available:
112112
113113
* `vector.iter()`, for immutable references to the elements
114114
* `vector.mut_iter()`, for mutable references to the elements

src/libextra/json.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ use std::io::{WriterUtil, ReaderUtil};
2424
use std::io;
2525
use std::str;
2626
use std::to_str;
27-
use std::vec;
2827

2928
use serialize::Encodable;
3029
use serialize;
@@ -941,7 +940,7 @@ impl serialize::Decoder for Decoder {
941940
let name = match self.stack.pop() {
942941
String(s) => s,
943942
List(list) => {
944-
do vec::consume_reverse(list) |_i, v| {
943+
for list.consume_rev_iter().advance |v| {
945944
self.stack.push(v);
946945
}
947946
match self.stack.pop() {
@@ -1059,7 +1058,7 @@ impl serialize::Decoder for Decoder {
10591058
let len = match self.stack.pop() {
10601059
List(list) => {
10611060
let len = list.len();
1062-
do vec::consume_reverse(list) |_i, v| {
1061+
for list.consume_rev_iter().advance |v| {
10631062
self.stack.push(v);
10641063
}
10651064
len

src/libextra/par.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,10 @@ fn map_slices<A:Copy + Send,B:Copy + Send>(
7878
info!("num_tasks: %?", (num_tasks, futures.len()));
7979
assert_eq!(num_tasks, futures.len());
8080

81-
let r = do vec::map_consume(futures) |ys| {
81+
do futures.consume_iter().transform |ys| {
8282
let mut ys = ys;
8383
ys.get()
84-
};
85-
r
84+
}.collect()
8685
}
8786
}
8887

src/libextra/test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ fn run_tests(opts: &TestOpts,
477477
}
478478
479479
// All benchmarks run at the end, in serial.
480-
do vec::consume(filtered_benchs) |_, b| {
480+
for filtered_benchs.consume_iter().advance |b| {
481481
callback(TeWait(copy b.desc));
482482
run_test(!opts.run_benchmarks, b, ch.clone());
483483
let (test, result) = p.recv();

src/librustc/back/link.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -893,7 +893,7 @@ pub fn link_args(sess: Session,
893893
// Add all the link args for external crates.
894894
do cstore::iter_crate_data(cstore) |crate_num, _| {
895895
let link_args = csearch::get_link_args_for_crate(cstore, crate_num);
896-
do vec::consume(link_args) |_, link_arg| {
896+
for link_args.consume_iter().advance |link_arg| {
897897
args.push(link_arg);
898898
}
899899
}

src/librustc/driver/driver.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,10 @@ pub fn build_configuration(sess: Session, argv0: @str, input: &input) ->
123123
// Convert strings provided as --cfg [cfgspec] into a crate_cfg
124124
fn parse_cfgspecs(cfgspecs: ~[~str],
125125
demitter: diagnostic::Emitter) -> ast::crate_cfg {
126-
do vec::map_consume(cfgspecs) |s| {
126+
do cfgspecs.consume_iter().transform |s| {
127127
let sess = parse::new_parse_sess(Some(demitter));
128128
parse::parse_meta_from_source_str(@"cfgspec", s.to_managed(), ~[], sess)
129-
}
129+
}.collect()
130130
}
131131

132132
pub enum input {

src/librustc/middle/lint.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ use std::u16;
2424
use std::u32;
2525
use std::u64;
2626
use std::u8;
27-
use std::vec;
2827
use extra::smallintmap::SmallIntMap;
2928
use syntax::attr;
3029
use syntax::codemap::span;
@@ -987,7 +986,7 @@ fn lint_session() -> visit::vt<@mut Context> {
987986
match cx.tcx.sess.lints.pop(&id) {
988987
None => {},
989988
Some(l) => {
990-
do vec::consume(l) |_, (lint, span, msg)| {
989+
for l.consume_iter().advance |(lint, span, msg)| {
991990
cx.span_lint(lint, span, msg)
992991
}
993992
}

src/libstd/at_vec.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ use kinds::Copy;
1717
use option::Option;
1818
use sys;
1919
use uint;
20-
use vec;
21-
use vec::ImmutableVector;
20+
use vec::{ImmutableVector, OwnedVector};
2221

2322
/// Code for dealing with @-vectors. This is pretty incomplete, and
2423
/// contains a bunch of duplication from the code for ~-vectors.
@@ -159,7 +158,7 @@ pub fn to_managed_consume<T>(v: ~[T]) -> @[T] {
159158
let mut av = @[];
160159
unsafe {
161160
raw::reserve(&mut av, v.len());
162-
do vec::consume(v) |_i, x| {
161+
for v.consume_iter().advance |x| {
163162
raw::push(&mut av, x);
164163
}
165164
transmute(av)

src/libstd/either.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ pub fn rights<T, U: Copy>(eithers: &[Either<T, U>]) -> ~[U] {
7373
pub fn partition<T, U>(eithers: ~[Either<T, U>]) -> (~[T], ~[U]) {
7474
let mut lefts: ~[T] = ~[];
7575
let mut rights: ~[U] = ~[];
76-
do vec::consume(eithers) |_i, elt| {
76+
for eithers.consume_iter().advance |elt| {
7777
match elt {
7878
Left(l) => lefts.push(l),
7979
Right(r) => rights.push(r)

src/libstd/hashmap.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use rand::RngUtil;
2424
use rand;
2525
use uint;
2626
use vec;
27-
use vec::{ImmutableVector, MutableVector};
27+
use vec::{ImmutableVector, MutableVector, OwnedVector};
2828
use kinds::Copy;
2929
use util::{replace, unreachable};
3030

@@ -175,7 +175,8 @@ impl<K:Hash + Eq,V> HashMap<K, V> {
175175
vec::from_fn(new_capacity, |_| None));
176176

177177
self.size = 0;
178-
do vec::consume(old_buckets) |_, bucket| {
178+
// consume_rev_iter is more efficient
179+
for old_buckets.consume_rev_iter().advance |bucket| {
179180
self.insert_opt_bucket(bucket);
180181
}
181182
}
@@ -441,7 +442,7 @@ impl<K: Hash + Eq, V> HashMap<K, V> {
441442
vec::from_fn(INITIAL_CAPACITY, |_| None));
442443
self.size = 0;
443444

444-
do vec::consume(buckets) |_, bucket| {
445+
for buckets.consume_iter().advance |bucket| {
445446
match bucket {
446447
None => {},
447448
Some(Bucket{key, value, _}) => {

0 commit comments

Comments
 (0)