Skip to content

Commit c46e647

Browse files
committed
---
yaml --- r: 67266 b: refs/heads/master c: af5a17b h: refs/heads/master v: v3
1 parent 6da7f74 commit c46e647

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 8c0227251299982eaab1c8ebebc76bd856efd38f
2+
refs/heads/master: af5a17b7d0788438bb6b39cccfc96a0b13e00250
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 18e3db7392d2d0697b7e27d6d986139960144d85
55
refs/heads/try: 7b78b52e602bb3ea8174f9b2006bff3315f03ef9

trunk/doc/tutorial-container.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,3 +322,31 @@ for it.invert().advance |x| {
322322
printfln!("%?", x);
323323
}
324324
~~~
325+
326+
## Random-access iterators
327+
328+
The `RandomAccessIterator` trait represents an iterator offering random access
329+
to the whole range. The `indexable` method retrieves the number of elements
330+
accessible with the `idx` method.
331+
332+
The `chain_` adaptor is an implementation of `RandomAccessIterator` if the
333+
underlying iterators are.
334+
335+
~~~
336+
let xs = [1, 2, 3, 4, 5];
337+
let ys = ~[7, 9, 11];
338+
let mut it = xs.iter().chain_(ys.iter());
339+
printfln!("%?", it.idx(0)); // prints `Some(&1)`
340+
printfln!("%?", it.idx(5)); // prints `Some(&7)`
341+
printfln!("%?", it.idx(7)); // prints `Some(&11)`
342+
printfln!("%?", it.idx(8)); // prints `None`
343+
344+
// yield two elements from the beginning, and one from the end
345+
it.next();
346+
it.next();
347+
it.next_back();
348+
349+
printfln!("%?", it.idx(0)); // prints `Some(&3)`
350+
printfln!("%?", it.idx(4)); // prints `Some(&9)`
351+
printfln!("%?", it.idx(6)); // prints `None`
352+
~~~

0 commit comments

Comments
 (0)