Skip to content

Commit b8ddd6d

Browse files
author
Palmer Cox
committed
---
yaml --- r: 92027 b: refs/heads/auto c: 2a8dfc3 h: refs/heads/master i: 92025: c8defca 92023: 2dc7a91 v: v3
1 parent 4dce882 commit b8ddd6d

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
@@ -13,7 +13,7 @@ refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0
1313
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
1414
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
1515
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
16-
refs/heads/auto: f2a01ea27734c9b20389f75d2b0c0da34f4ba5b7
16+
refs/heads/auto: 2a8dfc3f22e9f2482719fe89d8c8f2aabae8d754
1717
refs/heads/servo: af82457af293e2a842ba6b7759b70288da276167
1818
refs/tags/release-0.6: b4ebcfa1812664df5e142f0134a5faea3918544c
1919
refs/tags/0.1: b19db808c2793fe2976759b85a355c3ad8c8b336

branches/auto/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)