Skip to content

Commit 9ccf443

Browse files
author
blake2-ppc
committed
ringbuf: Implement .size_hint() for iterators
1 parent 0cb1ac0 commit 9ccf443

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/libextra/ringbuf.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,11 @@ macro_rules! iterator {
214214
self.nelts -= 1;
215215
Some(self.elts[raw_index]. $getter ())
216216
}
217+
218+
#[inline]
219+
fn size_hint(&self) -> (uint, Option<uint>) {
220+
(self.nelts, Some(self.nelts))
221+
}
217222
}
218223
}
219224
}
@@ -578,6 +583,7 @@ mod tests {
578583
fn test_iter() {
579584
let mut d = RingBuf::new();
580585
assert_eq!(d.iter().next(), None);
586+
assert_eq!(d.iter().size_hint(), (0, Some(0)));
581587

582588
for int::range(0,5) |i| {
583589
d.push_back(i);
@@ -588,6 +594,15 @@ mod tests {
588594
d.push_front(i);
589595
}
590596
assert_eq!(d.iter().collect::<~[&int]>(), ~[&8,&7,&6,&0,&1,&2,&3,&4]);
597+
598+
let mut it = d.iter();
599+
let mut len = d.len();
600+
loop {
601+
match it.next() {
602+
None => break,
603+
_ => { len -= 1; assert_eq!(it.size_hint(), (len, Some(len))) }
604+
}
605+
}
591606
}
592607

593608
#[test]

0 commit comments

Comments
 (0)