Skip to content

Commit b0e3ffd

Browse files
committed
auto merge of #7263 : thestinger/rust/iterator, r=graydon
2 parents ba05af7 + 06bec77 commit b0e3ffd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+353
-671
lines changed

doc/tutorial-tasks.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ let ports = do vec::from_fn(3) |init_val| {
283283
};
284284
285285
// Wait on each port, accumulating the results
286-
let result = ports.foldl(0, |accum, port| *accum + port.recv() );
286+
let result = ports.iter().fold(0, |accum, port| accum + port.recv() );
287287
# fn some_expensive_computation(_i: uint) -> int { 42 }
288288
~~~
289289

src/compiletest/runtest.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ fn check_expected_errors(expected_errors: ~[errors::ExpectedError],
358358
// is the ending point, and * represents ANSI color codes.
359359
for ProcRes.stderr.line_iter().advance |line| {
360360
let mut was_expected = false;
361-
for vec::eachi(expected_errors) |i, ee| {
361+
for expected_errors.iter().enumerate().advance |(i, ee)| {
362362
if !found_flags[i] {
363363
debug!("prefix=%s ee.kind=%s ee.msg=%s line=%s",
364364
prefixes[i], ee.kind, ee.msg, line);

src/libextra/bitv.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,7 @@ impl BitvSet {
639639
if self.capacity() < other.capacity() {
640640
self.bitv.storage.grow(other.capacity() / uint::bits, &0);
641641
}
642-
for other.bitv.storage.eachi |i, &w| {
642+
for other.bitv.storage.iter().enumerate().advance |(i, &w)| {
643643
let old = self.bitv.storage[i];
644644
let new = f(old, w);
645645
self.bitv.storage[i] = new;
@@ -672,7 +672,7 @@ impl BaseIter<uint> for BitvSet {
672672
fn size_hint(&self) -> Option<uint> { Some(self.len()) }
673673

674674
fn each(&self, blk: &fn(v: &uint) -> bool) -> bool {
675-
for self.bitv.storage.eachi |i, &w| {
675+
for self.bitv.storage.iter().enumerate().advance |(i, &w)| {
676676
if !iterate_bits(i * uint::bits, w, |b| blk(&b)) {
677677
return false;
678678
}
@@ -826,7 +826,7 @@ impl BitvSet {
826826
f: &fn(uint, uint, uint) -> bool) -> bool {
827827
let min = uint::min(self.bitv.storage.len(),
828828
other.bitv.storage.len());
829-
self.bitv.storage.slice(0, min).eachi(|i, &w| {
829+
self.bitv.storage.slice(0, min).iter().enumerate().advance(|(i, &w)| {
830830
f(i * uint::bits, w, other.bitv.storage[i])
831831
})
832832
}
@@ -845,12 +845,12 @@ impl BitvSet {
845845
let min = uint::min(len1, len2);
846846

847847
/* only one of these loops will execute and that's the point */
848-
for self.bitv.storage.slice(min, len1).eachi |i, &w| {
848+
for self.bitv.storage.slice(min, len1).iter().enumerate().advance |(i, &w)| {
849849
if !f(true, (i + min) * uint::bits, w) {
850850
return false;
851851
}
852852
}
853-
for other.bitv.storage.slice(min, len2).eachi |i, &w| {
853+
for other.bitv.storage.slice(min, len2).iter().enumerate().advance |(i, &w)| {
854854
if !f(false, (i + min) * uint::bits, w) {
855855
return false;
856856
}

src/libextra/fileinput.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ mod test {
448448
|i| fmt!("tmp/lib-fileinput-test-fileinput-read-byte-%u.tmp", i)), true);
449449
450450
// 3 files containing 0\n, 1\n, and 2\n respectively
451-
for filenames.eachi |i, &filename| {
451+
for filenames.iter().enumerate().advance |(i, &filename)| {
452452
make_file(filename.get_ref(), [fmt!("%u", i)]);
453453
}
454454
@@ -478,7 +478,7 @@ mod test {
478478
|i| fmt!("tmp/lib-fileinput-test-fileinput-read-%u.tmp", i)), true);
479479
480480
// 3 files containing 1\n, 2\n, and 3\n respectively
481-
for filenames.eachi |i, &filename| {
481+
for filenames.iter().enumerate().advance |(i, &filename)| {
482482
make_file(filename.get_ref(), [fmt!("%u", i)]);
483483
}
484484
@@ -498,7 +498,7 @@ mod test {
498498
3,
499499
|i| fmt!("tmp/lib-fileinput-test-input-vec-%u.tmp", i)), true);
500500

501-
for filenames.eachi |i, &filename| {
501+
for filenames.iter().enumerate().advance |(i, &filename)| {
502502
let contents =
503503
vec::from_fn(3, |j| fmt!("%u %u", i, j));
504504
make_file(filename.get_ref(), contents);
@@ -518,7 +518,7 @@ mod test {
518518
3,
519519
|i| fmt!("tmp/lib-fileinput-test-input-vec-state-%u.tmp", i)),true);
520520

521-
for filenames.eachi |i, &filename| {
521+
for filenames.iter().enumerate().advance |(i, &filename)| {
522522
let contents =
523523
vec::from_fn(3, |j| fmt!("%u %u", i, j + 1));
524524
make_file(filename.get_ref(), contents);
@@ -582,7 +582,7 @@ mod test {
582582
3,
583583
|i| fmt!("tmp/lib-fileinput-test-next-file-%u.tmp", i)),true);
584584
585-
for filenames.eachi |i, &filename| {
585+
for filenames.iter().enumerate().advance |(i, &filename)| {
586586
let contents =
587587
vec::from_fn(3, |j| fmt!("%u %u", i, j + 1));
588588
make_file(&filename.get(), contents);

src/libextra/flatpipes.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -307,11 +307,11 @@ impl<T,U:Unflattener<T>,P:BytePort> GenericPort<T> for FlatPort<T, U, P> {
307307

308308
impl<T,F:Flattener<T>,C:ByteChan> GenericChan<T> for FlatChan<T, F, C> {
309309
fn send(&self, val: T) {
310-
self.byte_chan.send(CONTINUE.to_vec());
310+
self.byte_chan.send(CONTINUE.to_owned());
311311
let bytes = self.flattener.flatten(val);
312312
let len = bytes.len() as u64;
313313
do io::u64_to_be_bytes(len, size_of::<u64>()) |len_bytes| {
314-
self.byte_chan.send(len_bytes.to_vec());
314+
self.byte_chan.send(len_bytes.to_owned());
315315
}
316316
self.byte_chan.send(bytes);
317317
}
@@ -937,7 +937,7 @@ mod test {
937937
fn test_try_recv_none3<P:BytePort>(loader: PortLoader<P>) {
938938
static CONTINUE: [u8, ..4] = [0xAA, 0xBB, 0xCC, 0xDD];
939939
// The control word is followed by garbage
940-
let bytes = CONTINUE.to_vec() + [0];
940+
let bytes = CONTINUE.to_owned() + [0];
941941
let port = loader(bytes);
942942
let res: Option<int> = port.try_recv();
943943
assert!(res.is_none());
@@ -959,9 +959,9 @@ mod test {
959959
// then undeserializable garbage
960960
let len_bytes = do io::u64_to_be_bytes(
961961
1, sys::size_of::<u64>()) |len_bytes| {
962-
len_bytes.to_vec()
962+
len_bytes.to_owned()
963963
};
964-
let bytes = CONTINUE.to_vec() + len_bytes + [0, 0, 0, 0];
964+
let bytes = CONTINUE.to_owned() + len_bytes + [0, 0, 0, 0];
965965

966966
let port = loader(bytes);
967967

src/libextra/getopts.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ fn name_str(nm: &Name) -> ~str {
177177
}
178178

179179
fn find_opt(opts: &[Opt], nm: Name) -> Option<uint> {
180-
vec::position(opts, |opt| opt.name == nm)
180+
opts.iter().position_(|opt| opt.name == nm)
181181
}
182182

183183
/**

src/libextra/json.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -950,7 +950,7 @@ impl serialize::Decoder for Decoder {
950950
}
951951
ref json => fail!("invalid variant: %?", *json),
952952
};
953-
let idx = match vec::position(names, |n| str::eq_slice(*n, name)) {
953+
let idx = match names.iter().position_(|n| str::eq_slice(*n, name)) {
954954
Some(idx) => idx,
955955
None => fail!("Unknown variant name: %?", name),
956956
};

src/libextra/net_ip.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ pub mod v4 {
205205
}).collect();
206206
if parts.len() != 4 {
207207
Err(fmt!("'%s' doesn't have 4 parts", ip))
208-
} else if parts.contains(&256) {
208+
} else if parts.iter().any_(|x| *x == 256u) {
209209
Err(fmt!("invalid octal in addr '%s'", ip))
210210
} else {
211211
Ok(Ipv4Rep {

src/libextra/net_tcp.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -978,7 +978,7 @@ impl io::Writer for TcpSocketBuf {
978978
let w_result = write_common_impl(socket_data_ptr,
979979
vec::slice(data,
980980
0,
981-
data.len()).to_vec());
981+
data.len()).to_owned());
982982
if w_result.is_err() {
983983
let err_data = w_result.get_err();
984984
debug!(

src/libextra/net_url.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -519,8 +519,9 @@ fn get_authority(rawurl: &str) ->
519519
let end = end; // make end immutable so it can be captured
520520

521521
let host_is_end_plus_one: &fn() -> bool = || {
522+
let xs = ['?', '#', '/'];
522523
end+1 == len
523-
&& !['?', '#', '/'].contains(&(rawurl[end] as char))
524+
&& !xs.iter().any_(|x| *x == (rawurl[end] as char))
524525
};
525526

526527
// finish up

src/libextra/num/bigint.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1175,8 +1175,8 @@ mod biguint_tests {
11751175
fn test_cmp() {
11761176
let data = [ &[], &[1], &[2], &[-1], &[0, 1], &[2, 1], &[1, 1, 1] ]
11771177
.map(|v| BigUint::from_slice(*v));
1178-
for data.eachi |i, ni| {
1179-
for vec::slice(data, i, data.len()).eachi |j0, nj| {
1178+
for data.iter().enumerate().advance |(i, ni)| {
1179+
for vec::slice(data, i, data.len()).iter().enumerate().advance |(j0, nj)| {
11801180
let j = j0 + i;
11811181
if i == j {
11821182
assert_eq!(ni.cmp(nj), Equal);
@@ -1651,8 +1651,8 @@ mod bigint_tests {
16511651
nums.push(Zero::zero());
16521652
nums.push_all_move(vs.map(|s| BigInt::from_slice(Plus, *s)));
16531653

1654-
for nums.eachi |i, ni| {
1655-
for vec::slice(nums, i, nums.len()).eachi |j0, nj| {
1654+
for nums.iter().enumerate().advance |(i, ni)| {
1655+
for vec::slice(nums, i, nums.len()).iter().enumerate().advance |(j0, nj)| {
16561656
let j = i + j0;
16571657
if i == j {
16581658
assert_eq!(ni.cmp(nj), Equal);

src/libextra/serialize.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@ impl<D:Decoder,T:Decodable<D>> Decodable<D> for @T {
432432
impl<'self, S:Encoder,T:Encodable<S>> Encodable<S> for &'self [T] {
433433
fn encode(&self, s: &mut S) {
434434
do s.emit_seq(self.len()) |s| {
435-
for self.eachi |i, e| {
435+
for self.iter().enumerate().advance |(i, e)| {
436436
s.emit_seq_elt(i, |s| e.encode(s))
437437
}
438438
}
@@ -442,7 +442,7 @@ impl<'self, S:Encoder,T:Encodable<S>> Encodable<S> for &'self [T] {
442442
impl<S:Encoder,T:Encodable<S>> Encodable<S> for ~[T] {
443443
fn encode(&self, s: &mut S) {
444444
do s.emit_seq(self.len()) |s| {
445-
for self.eachi |i, e| {
445+
for self.iter().enumerate().advance |(i, e)| {
446446
s.emit_seq_elt(i, |s| e.encode(s))
447447
}
448448
}
@@ -462,7 +462,7 @@ impl<D:Decoder,T:Decodable<D>> Decodable<D> for ~[T] {
462462
impl<S:Encoder,T:Encodable<S>> Encodable<S> for @[T] {
463463
fn encode(&self, s: &mut S) {
464464
do s.emit_seq(self.len()) |s| {
465-
for self.eachi |i, e| {
465+
for self.iter().enumerate().advance |(i, e)| {
466466
s.emit_seq_elt(i, |s| e.encode(s))
467467
}
468468
}
@@ -901,7 +901,7 @@ pub trait EncoderHelpers {
901901
impl<S:Encoder> EncoderHelpers for S {
902902
fn emit_from_vec<T>(&mut self, v: &[T], f: &fn(&mut S, &T)) {
903903
do self.emit_seq(v.len()) |this| {
904-
for v.eachi |i, e| {
904+
for v.iter().enumerate().advance |(i, e)| {
905905
do this.emit_seq_elt(i) |this| {
906906
f(this, e)
907907
}

src/libextra/sha1.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ use core::vec;
3636
/// The SHA-1 interface
3737
trait Sha1 {
3838
/// Provide message input as bytes
39-
fn input(&mut self, &const [u8]);
39+
fn input(&mut self, &[u8]);
4040
/// Provide message input as string
4141
fn input_str(&mut self, &str);
4242
/**
@@ -74,9 +74,9 @@ pub fn sha1() -> @Sha1 {
7474
computed: bool,
7575
work_buf: @mut ~[u32]};
7676

77-
fn add_input(st: &mut Sha1State, msg: &const [u8]) {
77+
fn add_input(st: &mut Sha1State, msg: &[u8]) {
7878
assert!((!st.computed));
79-
for vec::each_const(msg) |element| {
79+
for msg.iter().advance |element| {
8080
st.msg_block[st.msg_block_idx] = *element;
8181
st.msg_block_idx += 1u;
8282
st.len_low += 8u32;
@@ -242,7 +242,7 @@ pub fn sha1() -> @Sha1 {
242242
self.h[4] = 0xC3D2E1F0u32;
243243
self.computed = false;
244244
}
245-
fn input(&mut self, msg: &const [u8]) { add_input(self, msg); }
245+
fn input(&mut self, msg: &[u8]) { add_input(self, msg); }
246246
fn input_str(&mut self, msg: &str) {
247247
add_input(self, msg.as_bytes());
248248
}

src/libextra/sort.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -731,7 +731,7 @@ fn copy_vec<T:Copy>(dest: &mut [T],
731731
from: &[T]) {
732732
assert!(s1+from.len() <= dest.len());
733733

734-
for from.eachi |i, v| {
734+
for from.iter().enumerate().advance |(i, v)| {
735735
dest[s1+i] = copy *v;
736736
}
737737
}
@@ -743,7 +743,7 @@ fn shift_vec<T:Copy>(dest: &mut [T],
743743
len: uint) {
744744
assert!(s1+len <= dest.len());
745745

746-
let tmp = dest.slice(s2, s2+len).to_vec();
746+
let tmp = dest.slice(s2, s2+len).to_owned();
747747
copy_vec(dest, s1, tmp);
748748
}
749749

src/libextra/terminfo/parser/compiled.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ pub fn parse(file: @Reader, longnames: bool) -> Result<~TermInfo, ~str> {
271271
return Err(~"error: hit EOF before end of string table");
272272
}
273273

274-
for string_offsets.eachi |i, v| {
274+
for string_offsets.iter().enumerate().advance |(i, v)| {
275275
let offset = *v;
276276
if offset == 0xFFFF { // non-entry
277277
loop;

src/libextra/treemap.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,7 @@ mod test_treemap {
853853
for 90.times {
854854
let k = rng.gen();
855855
let v = rng.gen();
856-
if !ctrl.contains(&(k, v)) {
856+
if !ctrl.iter().any_(|x| x == &(k, v)) {
857857
assert!(map.insert(k, v));
858858
ctrl.push((k, v));
859859
check_structure(&map);

src/librust/rust.rc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,9 @@ fn rustc_help() {
135135
}
136136

137137
fn find_cmd(command_string: &str) -> Option<Command> {
138-
do commands.find |command| {
138+
do commands.iter().find_ |command| {
139139
command.cmd == command_string
140-
}
140+
}.map_consume(|x| copy *x)
141141
}
142142

143143
fn cmd_help(args: &[~str]) -> ValidUsage {

src/librustc/front/config.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -197,13 +197,13 @@ pub fn metas_in_cfg(cfg: ast::crate_cfg,
197197
// which the item is valid
198198
let cfg_metas = vec::filter_map(cfg_metas, |i| attr::get_meta_item_list(i));
199199

200-
if cfg_metas.all(|c| c.is_empty()) { return true; }
200+
if cfg_metas.iter().all(|c| c.is_empty()) { return true; }
201201

202-
cfg_metas.any(|cfg_meta| {
203-
cfg_meta.all(|cfg_mi| {
202+
cfg_metas.iter().any_(|cfg_meta| {
203+
cfg_meta.iter().all(|cfg_mi| {
204204
match cfg_mi.node {
205205
ast::meta_list(s, ref it) if "not" == s
206-
=> it.all(|mi| !attr::contains(cfg, *mi)),
206+
=> it.iter().all(|mi| !attr::contains(cfg, *mi)),
207207
_ => attr::contains(cfg, *cfg_mi)
208208
}
209209
})

src/librustc/lib/llvm.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2157,7 +2157,7 @@ pub fn type_to_str_inner(names: @TypeNames, outer0: &[TypeRef], ty: TypeRef)
21572157
_ => {}
21582158
}
21592159

2160-
let outer = vec::append_one(outer0.to_vec(), ty);
2160+
let outer = vec::append_one(outer0.to_owned(), ty);
21612161

21622162
let kind = llvm::LLVMGetTypeKind(ty);
21632163

src/librustc/metadata/creader.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,16 @@ fn warn_if_multiple_versions(e: @mut Env,
8585
*crate_cache[crate_cache.len() - 1].metas
8686
);
8787

88-
let (matches, non_matches) =
89-
partition(crate_cache.map_to_vec(|&entry| {
90-
let othername = loader::crate_name_from_metas(
91-
copy *entry.metas);
92-
if name == othername {
93-
Left(entry)
94-
} else {
95-
Right(entry)
96-
}
97-
}));
88+
let vec: ~[Either<cache_entry, cache_entry>] = crate_cache.iter().transform(|&entry| {
89+
let othername = loader::crate_name_from_metas(
90+
copy *entry.metas);
91+
if name == othername {
92+
Left(entry)
93+
} else {
94+
Right(entry)
95+
}
96+
}).collect();
97+
let (matches, non_matches) = partition(vec);
9898

9999
assert!(!matches.is_empty());
100100

src/librustc/metadata/cstore.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ pub fn get_used_crate_files(cstore: &CStore) -> ~[Path] {
104104
pub fn add_used_library(cstore: &mut CStore, lib: @str) -> bool {
105105
assert!(!lib.is_empty());
106106

107-
if cstore.used_libraries.contains(&lib) { return false; }
107+
if cstore.used_libraries.iter().any_(|x| x == &lib) { return false; }
108108
cstore.used_libraries.push(lib);
109109
true
110110
}

src/librustc/metadata/encoder.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1014,7 +1014,8 @@ fn encode_info_for_item(ecx: &EncodeContext,
10141014
ebml_w.end_tag();
10151015

10161016
// Now output the method info for each method.
1017-
for ty::trait_method_def_ids(tcx, local_def(item.id)).eachi |i, &method_def_id| {
1017+
let r = ty::trait_method_def_ids(tcx, local_def(item.id));
1018+
for r.iter().enumerate().advance |(i, &method_def_id)| {
10181019
assert_eq!(method_def_id.crate, ast::local_crate);
10191020

10201021
let method_ty = ty::method(tcx, method_def_id);

0 commit comments

Comments
 (0)