auto merge of #7263 : thestinger/rust/iterator, r=graydon

This commit is contained in:
bors 2013-06-21 01:49:50 -07:00
commit b0e3ffd380
107 changed files with 353 additions and 671 deletions

View file

@ -44,7 +44,7 @@ fn maybe_run_test(argv: &[~str], name: ~str, test: &fn()) {
if os::getenv(~"RUST_BENCH").is_some() {
run_test = true
} else if argv.len() > 0 {
run_test = argv.contains(&~"all") || argv.contains(&name)
run_test = argv.iter().any_(|x| x == &~"all") || argv.iter().any_(|x| x == &name)
}
if !run_test {

View file

@ -378,7 +378,7 @@ fn validate(edges: ~[(node_id, node_id)],
info!(~"Verifying graph edges...");
let status = do edges.all() |e| {
let status = do edges.iter().all |e| {
let (u, v) = *e;
abs(level[u] - level[v]) <= 1
@ -402,7 +402,7 @@ fn validate(edges: ~[(node_id, node_id)],
if *v == -1i64 || u == root {
true
} else {
edges.contains(&(u, *v)) || edges.contains(&(*v, u))
edges.iter().any_(|x| x == &(u, *v)) || edges.iter().any_(|x| x == &(*v, u))
}
};
result

View file

@ -23,11 +23,11 @@ use std::uint;
use std::vec;
fn print_complements() {
let all = ~[Blue, Red, Yellow];
for vec::each(all) |aa| {
for vec::each(all) |bb| {
io::println(show_color(*aa) + " + " + show_color(*bb) +
" -> " + show_color(transform(*aa, *bb)));
let all = [Blue, Red, Yellow];
for all.iter().advance |aa| {
for all.iter().advance |bb| {
println(show_color(*aa) + " + " + show_color(*bb) +
" -> " + show_color(transform(*aa, *bb)));
}
}
}
@ -49,7 +49,7 @@ fn show_color(cc: color) -> ~str {
fn show_color_list(set: ~[color]) -> ~str {
let mut out = ~"";
for vec::eachi(set) |_ii, col| {
for set.iter().advance |col| {
out += " ";
out += show_color(*col);
}
@ -182,7 +182,7 @@ fn rendezvous(nn: uint, set: ~[color]) {
}
// tell each creature to stop
for vec::eachi(to_creature) |_ii, to_one| {
for to_creature.iter().advance |to_one| {
to_one.send(None);
}

View file

@ -90,7 +90,7 @@ fn find(mm: &HashMap<~[u8], uint>, key: ~str) -> uint {
// given a map, increment the counter for a key
fn update_freq(mm: &mut HashMap<~[u8], uint>, key: &[u8]) {
let key = vec::slice(key, 0, key.len()).to_vec();
let key = vec::slice(key, 0, key.len()).to_owned();
let newval = match mm.pop(&key) {
Some(v) => v + 1,
None => 1
@ -111,7 +111,7 @@ fn windows_with_carry(bb: &[u8], nn: uint,
ii += 1u;
}
return vec::slice(bb, len - (nn - 1u), len).to_vec();
return vec::slice(bb, len - (nn - 1u), len).to_owned();
}
fn make_sequence_processor(sz: uint,
@ -211,7 +211,7 @@ fn main() {
(_, true) => {
let line_bytes = line.as_bytes();
for sizes.eachi |ii, _sz| {
for sizes.iter().enumerate().advance |(ii, _sz)| {
let mut lb = line_bytes.to_owned();
to_child[ii].send(lb);
}
@ -223,12 +223,12 @@ fn main() {
}
// finish...
for sizes.eachi |ii, _sz| {
for sizes.iter().enumerate().advance |(ii, _sz)| {
to_child[ii].send(~[]);
}
// now fetch and print result messages
for sizes.eachi |ii, _sz| {
for sizes.iter().enumerate().advance |(ii, _sz)| {
io::println(from_child[ii].recv());
}
}

View file

@ -10,7 +10,7 @@ fn A(i: i32, j: i32) -> i32 {
fn dot(v: &[f64], u: &[f64]) -> f64 {
let mut sum = 0.0;
for v.eachi |i, &v_i| {
for v.iter().enumerate().advance |(i, &v_i)| {
sum += v_i * u[i];
}
sum

View file

@ -25,8 +25,8 @@ pub fn main() {
// in order for both Ord and TotalOrd
let es = [e0, e11, e12, e21, e22];
for es.eachi |i, e1| {
for es.eachi |j, e2| {
for es.iter().enumerate().advance |(i, e1)| {
for es.iter().enumerate().advance |(j, e2)| {
let ord = i.cmp(&j);
let eq = i == j;

View file

@ -21,8 +21,8 @@ pub fn main() {
// in order for both Ord and TotalOrd
let ss = [s1, s2];
for ss.eachi |i, s1| {
for ss.eachi |j, s2| {
for ss.iter().enumerate().advance |(i, s1)| {
for ss.iter().enumerate().advance |(j, s2)| {
let ord = i.cmp(&j);
let eq = i == j;

View file

@ -19,8 +19,8 @@ pub fn main() {
// in order for both Ord and TotalOrd
let tss = [ts1, ts2];
for tss.eachi |i, ts1| {
for tss.eachi |j, ts2| {
for tss.iter().enumerate().advance |(i, ts1)| {
for tss.iter().enumerate().advance |(j, ts2)| {
let ord = i.cmp(&j);
let eq = i == j;

View file

@ -1,24 +0,0 @@
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use std::old_iter::BaseIter;
use std::old_iter;
trait FlatMapToVec<A> {
fn flat_map_to_vec<B, IB:BaseIter<B>>(&self, op: &fn(&A) -> IB) -> ~[B];
}
impl<A:Copy> FlatMapToVec<A> for ~[A] {
fn flat_map_to_vec<B, IB:BaseIter<B>>(&self, op: &fn(&A) -> IB) -> ~[B] {
old_iter::flat_map_to_vec(self, op)
}
}
pub fn main() {}

View file

@ -1,16 +0,0 @@
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
pub fn main() {
let mut v = ~[1, 2, 3];
assert!(v.position(|x| *x == 1) == Some(0));
assert!(v.position(|x| *x == 3) == Some(2));
assert!(v.position(|x| *x == 17) == None);
}