Skip to content

Commit 8b9e1ce

Browse files
committed
auto merge of #8430 : erickt/rust/cleanup-iterators, r=erickt
This PR does a bunch of cleaning up of various APIs. The major one is that it merges `Iterator` and `IteratorUtil`, and renames functions like `transform` into `map`. I also merged `DoubleEndedIterator` and `DoubleEndedIteratorUtil`, as well as I renamed various .consume* functions to .move_iter(). This helps to implement part of #7887.
2 parents 2ba36ec + c8a93ef commit 8b9e1ce

Some content is hidden

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

109 files changed

+599
-700
lines changed

src/compiletest/header.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ fn parse_check_line(line: &str) -> Option<~str> {
142142
fn parse_exec_env(line: &str) -> Option<(~str, ~str)> {
143143
do parse_name_value_directive(line, ~"exec-env").map |nv| {
144144
// nv is either FOO or FOO=BAR
145-
let mut strs: ~[~str] = nv.splitn_iter('=', 1).transform(|s| s.to_owned()).collect();
145+
let mut strs: ~[~str] = nv.splitn_iter('=', 1).map(|s| s.to_owned()).collect();
146146

147147
match strs.len() {
148148
1u => (strs.pop(), ~""),

src/compiletest/runtest.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -350,13 +350,13 @@ fn check_expected_errors(expected_errors: ~[errors::ExpectedError],
350350
fatal(~"process did not return an error status");
351351
}
352352

353-
let prefixes = expected_errors.iter().transform(|ee| {
353+
let prefixes = expected_errors.iter().map(|ee| {
354354
fmt!("%s:%u:", testfile.to_str(), ee.line)
355355
}).collect::<~[~str]>();
356356

357357
fn to_lower( s : &str ) -> ~str {
358358
let i = s.iter();
359-
let c : ~[char] = i.transform( |c| {
359+
let c : ~[char] = i.map( |c| {
360360
if c.is_ascii() {
361361
c.to_ascii().to_lower().to_char()
362362
} else {
@@ -760,7 +760,7 @@ fn _arm_exec_compiled_test(config: &config, props: &TestProps,
760760
let cmdline = make_cmdline("", args.prog, args.args);
761761

762762
// get bare program string
763-
let mut tvec: ~[~str] = args.prog.split_iter('/').transform(|ts| ts.to_owned()).collect();
763+
let mut tvec: ~[~str] = args.prog.split_iter('/').map(|ts| ts.to_owned()).collect();
764764
let prog_short = tvec.pop();
765765

766766
// copy to target
@@ -938,7 +938,7 @@ fn disassemble_extract(config: &config, _props: &TestProps,
938938

939939
fn count_extracted_lines(p: &Path) -> uint {
940940
let x = io::read_whole_file_str(&p.with_filetype("ll")).unwrap();
941-
x.line_iter().len_()
941+
x.line_iter().len()
942942
}
943943

944944

src/libextra/bitv.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -869,7 +869,7 @@ impl BitvSet {
869869
let min = num::min(self.bitv.storage.len(), other.bitv.storage.len());
870870
self.bitv.storage.slice(0, min).iter().enumerate()
871871
.zip(Repeat::new(&other.bitv.storage))
872-
.transform(|((i, &w), o_store)| (i * uint::bits, w, o_store[i]))
872+
.map(|((i, &w), o_store)| (i * uint::bits, w, o_store[i]))
873873
}
874874

875875
/// Visits each word in self or other that extends beyond the other. This
@@ -888,11 +888,11 @@ impl BitvSet {
888888
if olen < slen {
889889
self.bitv.storage.slice_from(olen).iter().enumerate()
890890
.zip(Repeat::new(olen))
891-
.transform(|((i, &w), min)| (true, (i + min) * uint::bits, w))
891+
.map(|((i, &w), min)| (true, (i + min) * uint::bits, w))
892892
} else {
893893
other.bitv.storage.slice_from(slen).iter().enumerate()
894894
.zip(Repeat::new(slen))
895-
.transform(|((i, &w), min)| (false, (i + min) * uint::bits, w))
895+
.map(|((i, &w), min)| (false, (i + min) * uint::bits, w))
896896
}
897897
}
898898
}

src/libextra/dlist.rs

+25-25
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ pub struct MutDListIterator<'self, T> {
6363

6464
/// DList consuming iterator
6565
#[deriving(Clone)]
66-
pub struct ConsumeIterator<T> {
66+
pub struct MoveIterator<T> {
6767
priv list: DList<T>
6868
}
6969

@@ -391,14 +391,14 @@ impl<T> DList<T> {
391391

392392
/// Consume the list into an iterator yielding elements by value
393393
#[inline]
394-
pub fn consume_iter(self) -> ConsumeIterator<T> {
395-
ConsumeIterator{list: self}
394+
pub fn move_iter(self) -> MoveIterator<T> {
395+
MoveIterator{list: self}
396396
}
397397

398398
/// Consume the list into an iterator yielding elements by value, in reverse
399399
#[inline]
400-
pub fn consume_rev_iter(self) -> Invert<ConsumeIterator<T>> {
401-
self.consume_iter().invert()
400+
pub fn move_rev_iter(self) -> Invert<MoveIterator<T>> {
401+
self.move_iter().invert()
402402
}
403403
}
404404

@@ -557,7 +557,7 @@ impl<'self, A> ListInsertion<A> for MutDListIterator<'self, A> {
557557
}
558558
}
559559

560-
impl<A> Iterator<A> for ConsumeIterator<A> {
560+
impl<A> Iterator<A> for MoveIterator<A> {
561561
#[inline]
562562
fn next(&mut self) -> Option<A> { self.list.pop_front() }
563563

@@ -567,7 +567,7 @@ impl<A> Iterator<A> for ConsumeIterator<A> {
567567
}
568568
}
569569

570-
impl<A> DoubleEndedIterator<A> for ConsumeIterator<A> {
570+
impl<A> DoubleEndedIterator<A> for MoveIterator<A> {
571571
#[inline]
572572
fn next_back(&mut self) -> Option<A> { self.list.pop_back() }
573573
}
@@ -600,7 +600,7 @@ impl<A: Eq> Eq for DList<A> {
600600

601601
impl<A: Clone> Clone for DList<A> {
602602
fn clone(&self) -> DList<A> {
603-
self.iter().transform(|x| x.clone()).collect()
603+
self.iter().map(|x| x.clone()).collect()
604604
}
605605
}
606606

@@ -690,7 +690,7 @@ mod tests {
690690

691691
#[cfg(test)]
692692
fn list_from<T: Clone>(v: &[T]) -> DList<T> {
693-
v.iter().transform(|x| (*x).clone()).collect()
693+
v.iter().map(|x| (*x).clone()).collect()
694694
}
695695

696696
#[test]
@@ -721,7 +721,7 @@ mod tests {
721721
check_links(&m);
722722
let sum = v + u;
723723
assert_eq!(sum.len(), m.len());
724-
for elt in sum.consume_iter() {
724+
for elt in sum.move_iter() {
725725
assert_eq!(m.pop_front(), Some(elt))
726726
}
727727
}
@@ -745,7 +745,7 @@ mod tests {
745745
check_links(&m);
746746
let sum = u + v;
747747
assert_eq!(sum.len(), m.len());
748-
for elt in sum.consume_iter() {
748+
for elt in sum.move_iter() {
749749
assert_eq!(m.pop_front(), Some(elt))
750750
}
751751
}
@@ -770,7 +770,7 @@ mod tests {
770770
m.rotate_backward(); check_links(&m);
771771
m.push_front(9); check_links(&m);
772772
m.rotate_forward(); check_links(&m);
773-
assert_eq!(~[3,9,5,1,2], m.consume_iter().collect());
773+
assert_eq!(~[3,9,5,1,2], m.move_iter().collect());
774774
}
775775

776776
#[test]
@@ -900,7 +900,7 @@ mod tests {
900900
}
901901
check_links(&m);
902902
assert_eq!(m.len(), 3 + len * 2);
903-
assert_eq!(m.consume_iter().collect::<~[int]>(), ~[-2,0,1,2,3,4,5,6,7,8,9,0,1]);
903+
assert_eq!(m.move_iter().collect::<~[int]>(), ~[-2,0,1,2,3,4,5,6,7,8,9,0,1]);
904904
}
905905

906906
#[test]
@@ -911,7 +911,7 @@ mod tests {
911911
m.merge(n, |a, b| a <= b);
912912
assert_eq!(m.len(), len);
913913
check_links(&m);
914-
let res = m.consume_iter().collect::<~[int]>();
914+
let res = m.move_iter().collect::<~[int]>();
915915
assert_eq!(res, ~[-1, 0, 0, 0, 1, 3, 5, 6, 7, 2, 7, 7, 9]);
916916
}
917917

@@ -927,7 +927,7 @@ mod tests {
927927
m.push_back(4);
928928
m.insert_ordered(3);
929929
check_links(&m);
930-
assert_eq!(~[2,3,4], m.consume_iter().collect::<~[int]>());
930+
assert_eq!(~[2,3,4], m.move_iter().collect::<~[int]>());
931931
}
932932

933933
#[test]
@@ -1003,7 +1003,7 @@ mod tests {
10031003
check_links(&m);
10041004

10051005
let mut i = 0u;
1006-
for (a, &b) in m.consume_iter().zip(v.iter()) {
1006+
for (a, &b) in m.move_iter().zip(v.iter()) {
10071007
i += 1;
10081008
assert_eq!(a, b);
10091009
}
@@ -1014,7 +1014,7 @@ mod tests {
10141014
fn bench_collect_into(b: &mut test::BenchHarness) {
10151015
let v = &[0, ..64];
10161016
do b.iter {
1017-
let _: DList<int> = v.iter().transform(|x| *x).collect();
1017+
let _: DList<int> = v.iter().map(|x| *x).collect();
10181018
}
10191019
}
10201020

@@ -1075,33 +1075,33 @@ mod tests {
10751075
#[bench]
10761076
fn bench_iter(b: &mut test::BenchHarness) {
10771077
let v = &[0, ..128];
1078-
let m: DList<int> = v.iter().transform(|&x|x).collect();
1078+
let m: DList<int> = v.iter().map(|&x|x).collect();
10791079
do b.iter {
1080-
assert!(m.iter().len_() == 128);
1080+
assert!(m.iter().len() == 128);
10811081
}
10821082
}
10831083
#[bench]
10841084
fn bench_iter_mut(b: &mut test::BenchHarness) {
10851085
let v = &[0, ..128];
1086-
let mut m: DList<int> = v.iter().transform(|&x|x).collect();
1086+
let mut m: DList<int> = v.iter().map(|&x|x).collect();
10871087
do b.iter {
1088-
assert!(m.mut_iter().len_() == 128);
1088+
assert!(m.mut_iter().len() == 128);
10891089
}
10901090
}
10911091
#[bench]
10921092
fn bench_iter_rev(b: &mut test::BenchHarness) {
10931093
let v = &[0, ..128];
1094-
let m: DList<int> = v.iter().transform(|&x|x).collect();
1094+
let m: DList<int> = v.iter().map(|&x|x).collect();
10951095
do b.iter {
1096-
assert!(m.rev_iter().len_() == 128);
1096+
assert!(m.rev_iter().len() == 128);
10971097
}
10981098
}
10991099
#[bench]
11001100
fn bench_iter_mut_rev(b: &mut test::BenchHarness) {
11011101
let v = &[0, ..128];
1102-
let mut m: DList<int> = v.iter().transform(|&x|x).collect();
1102+
let mut m: DList<int> = v.iter().map(|&x|x).collect();
11031103
do b.iter {
1104-
assert!(m.mut_rev_iter().len_() == 128);
1104+
assert!(m.mut_rev_iter().len() == 128);
11051105
}
11061106
}
11071107
}

src/libextra/fileinput.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ a literal `-`.
353353
*/
354354
// XXX: stupid, unclear name
355355
pub fn pathify(vec: &[~str], stdin_hyphen : bool) -> ~[Option<Path>] {
356-
vec.iter().transform(|str| {
356+
vec.iter().map(|str| {
357357
if stdin_hyphen && "-" == *str {
358358
None
359359
} else {

src/libextra/getopts.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,7 @@ pub mod groups {
647647

648648
let desc_sep = "\n" + " ".repeat(24);
649649

650-
let mut rows = opts.iter().transform(|optref| {
650+
let mut rows = opts.iter().map(|optref| {
651651
let OptGroup{short_name: short_name,
652652
long_name: long_name,
653653
hint: hint,

src/libextra/json.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -948,7 +948,7 @@ impl serialize::Decoder for Decoder {
948948
let name = match self.stack.pop() {
949949
String(s) => s,
950950
List(list) => {
951-
for v in list.consume_rev_iter() {
951+
for v in list.move_rev_iter() {
952952
self.stack.push(v);
953953
}
954954
match self.stack.pop() {
@@ -1066,7 +1066,7 @@ impl serialize::Decoder for Decoder {
10661066
let len = match self.stack.pop() {
10671067
List(list) => {
10681068
let len = list.len();
1069-
for v in list.consume_rev_iter() {
1069+
for v in list.move_rev_iter() {
10701070
self.stack.push(v);
10711071
}
10721072
len
@@ -1086,7 +1086,7 @@ impl serialize::Decoder for Decoder {
10861086
let len = match self.stack.pop() {
10871087
Object(obj) => {
10881088
let len = obj.len();
1089-
for (key, value) in obj.consume_iter() {
1089+
for (key, value) in obj.move_iter() {
10901090
self.stack.push(value);
10911091
self.stack.push(String(key));
10921092
}

src/libextra/num/bigint.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ impl Mul<BigUint, BigUint> for BigUint {
287287
if n == 1 { return (*a).clone(); }
288288

289289
let mut carry = 0;
290-
let mut prod = do a.data.iter().transform |ai| {
290+
let mut prod = do a.data.iter().map |ai| {
291291
let (hi, lo) = BigDigit::from_uint(
292292
(*ai as uint) * (n as uint) + (carry as uint)
293293
);
@@ -625,7 +625,7 @@ impl BigUint {
625625
if n_bits == 0 || self.is_zero() { return (*self).clone(); }
626626

627627
let mut carry = 0;
628-
let mut shifted = do self.data.iter().transform |elem| {
628+
let mut shifted = do self.data.iter().map |elem| {
629629
let (hi, lo) = BigDigit::from_uint(
630630
(*elem as uint) << n_bits | (carry as uint)
631631
);

src/libextra/par.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ fn map_slices<A:Clone + Send,B:Clone + Send>(
7777
info!("num_tasks: %?", (num_tasks, futures.len()));
7878
assert_eq!(num_tasks, futures.len());
7979

80-
do futures.consume_iter().transform |ys| {
80+
do futures.move_iter().map |ys| {
8181
let mut ys = ys;
8282
ys.get()
8383
}.collect()
@@ -90,7 +90,7 @@ pub fn map<A:Clone + Send,B:Clone + Send>(
9090
vec::concat(map_slices(xs, || {
9191
let f = fn_factory();
9292
let result: ~fn(uint, &[A]) -> ~[B] =
93-
|_, slice| slice.iter().transform(|x| f(x)).collect();
93+
|_, slice| slice.iter().map(|x| f(x)).collect();
9494
result
9595
}))
9696
}
@@ -102,7 +102,7 @@ pub fn mapi<A:Clone + Send,B:Clone + Send>(
102102
let slices = map_slices(xs, || {
103103
let f = fn_factory();
104104
let result: ~fn(uint, &[A]) -> ~[B] = |base, slice| {
105-
slice.iter().enumerate().transform(|(i, x)| {
105+
slice.iter().enumerate().map(|(i, x)| {
106106
f(i + base, x)
107107
}).collect()
108108
};

src/libextra/priority_queue.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ mod tests {
367367
fn test_from_iter() {
368368
let xs = ~[9u, 8, 7, 6, 5, 4, 3, 2, 1];
369369

370-
let mut q: PriorityQueue<uint> = xs.rev_iter().transform(|&x| x).collect();
370+
let mut q: PriorityQueue<uint> = xs.rev_iter().map(|&x| x).collect();
371371

372372
for &x in xs.iter() {
373373
assert_eq!(q.pop(), x);

src/libextra/ringbuf.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -692,11 +692,11 @@ mod tests {
692692
fn test_from_iterator() {
693693
use std::iterator;
694694
let v = ~[1,2,3,4,5,6,7];
695-
let deq: RingBuf<int> = v.iter().transform(|&x| x).collect();
696-
let u: ~[int] = deq.iter().transform(|&x| x).collect();
695+
let deq: RingBuf<int> = v.iter().map(|&x| x).collect();
696+
let u: ~[int] = deq.iter().map(|&x| x).collect();
697697
assert_eq!(u, v);
698698

699-
let mut seq = iterator::count(0u, 2).take_(256);
699+
let mut seq = iterator::count(0u, 2).take(256);
700700
let deq: RingBuf<uint> = seq.collect();
701701
for (i, &x) in deq.iter().enumerate() {
702702
assert_eq!(2*i, x);

src/libextra/smallintmap.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
#[allow(missing_doc)];
1717

18-
use std::iterator::{Iterator, IteratorUtil, Enumerate, FilterMap, Invert};
18+
use std::iterator::{Iterator, Enumerate, FilterMap, Invert};
1919
use std::util::replace;
2020
use std::vec::{VecIterator, VecMutIterator};
2121
use std::vec;
@@ -152,12 +152,12 @@ impl<V> SmallIntMap<V> {
152152
}
153153

154154
/// Empties the hash map, moving all values into the specified closure
155-
pub fn consume(&mut self)
155+
pub fn move_iter(&mut self)
156156
-> FilterMap<(uint, Option<V>), (uint, V),
157-
Enumerate<vec::ConsumeIterator<Option<V>>>>
157+
Enumerate<vec::MoveIterator<Option<V>>>>
158158
{
159159
let values = replace(&mut self.v, ~[]);
160-
values.consume_iter().enumerate().filter_map(|(i, v)| {
160+
values.move_iter().enumerate().filter_map(|(i, v)| {
161161
v.map_move(|v| (i, v))
162162
})
163163
}
@@ -452,11 +452,11 @@ mod test_map {
452452
}
453453

454454
#[test]
455-
fn test_consume() {
455+
fn test_move_iter() {
456456
let mut m = SmallIntMap::new();
457457
m.insert(1, ~2);
458458
let mut called = false;
459-
for (k, v) in m.consume() {
459+
for (k, v) in m.move_iter() {
460460
assert!(!called);
461461
called = true;
462462
assert_eq!(k, 1);

0 commit comments

Comments
 (0)