Skip to content

Commit 6d932ee

Browse files
author
Palmer Cox
committed
---
yaml --- r: 94005 b: refs/heads/try c: 2a8dfc3 h: refs/heads/master i: 94003: be77ff1 v: v3
1 parent c2c7bb6 commit 6d932ee

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: 0da105a8b7b6b1e0568e8ff20f6ff4b13cc7ecc2
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: a6d3e57dca68fde4effdda3e4ae2887aa535fcd6
5-
refs/heads/try: f2a01ea27734c9b20389f75d2b0c0da34f4ba5b7
5+
refs/heads/try: 2a8dfc3f22e9f2482719fe89d8c8f2aabae8d754
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c

branches/try/src/libstd/vec.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2611,6 +2611,23 @@ impl<'self, T> Iterator<&'self mut [T]> for MutChunkIter<'self, T> {
26112611
}
26122612
}
26132613

2614+
impl<'self, T> DoubleEndedIterator<&'self mut [T]> for MutChunkIter<'self, T> {
2615+
#[inline]
2616+
fn next_back(&mut self) -> Option<&'self mut [T]> {
2617+
if self.remaining == 0 {
2618+
None
2619+
} else {
2620+
let remainder = self.remaining % self.chunk_size;
2621+
let sz = if remainder != 0 { remainder } else { self.chunk_size };
2622+
let tmp = util::replace(&mut self.v, &mut []);
2623+
let (head, tail) = tmp.mut_split(self.remaining - sz);
2624+
self.v = head;
2625+
self.remaining -= sz;
2626+
Some(tail)
2627+
}
2628+
}
2629+
}
2630+
26142631
/// An iterator that moves out of a vector.
26152632
#[deriving(Clone)]
26162633
pub struct MoveIterator<T> {
@@ -4033,6 +4050,18 @@ mod tests {
40334050
assert_eq!(v, result);
40344051
}
40354052

4053+
#[test]
4054+
fn test_mut_chunks_invert() {
4055+
let mut v = [0u8, 1, 2, 3, 4, 5, 6];
4056+
for (i, chunk) in v.mut_chunks(3).invert().enumerate() {
4057+
for x in chunk.mut_iter() {
4058+
*x = i as u8;
4059+
}
4060+
}
4061+
let result = [2u8, 2, 2, 1, 1, 1, 0];
4062+
assert_eq!(v, result);
4063+
}
4064+
40364065
#[test]
40374066
#[should_fail]
40384067
fn test_mut_chunks_0() {

0 commit comments

Comments
 (0)