*: implement ExactSizeIterator where possible

This commit is contained in:
meh
2015-08-25 16:13:42 +02:00
parent 62acd3ef02
commit b839b5fe2f
5 changed files with 48 additions and 0 deletions

View File

@ -191,4 +191,12 @@ impl<'a> Iterator for SideDataIter<'a> {
}
}
}
fn size_hint(&self) -> (usize, Option<usize>) {
unsafe {
((*self.ptr).side_data_elems as usize, Some((*self.ptr).side_data_elems as usize))
}
}
}
impl<'a> ExactSizeIterator for SideDataIter<'a> { }

View File

@ -118,7 +118,15 @@ impl<'a> Iterator for RectIter<'a> {
}
}
}
fn size_hint(&self) -> (usize, Option<usize>) {
unsafe {
((*self.ptr).num_rects as usize, Some((*self.ptr).num_rects as usize))
}
}
}
impl<'a> ExactSizeIterator for RectIter<'a> { }
pub enum Rect<'a> {
None,

View File

@ -66,4 +66,12 @@ impl<'a> Iterator for DeviceIter<'a> {
}
}
}
fn size_hint(&self) -> (usize, Option<usize>) {
unsafe {
((*self.ptr).nb_devices as usize, Some((*self.ptr).nb_devices as usize))
}
}
}
impl<'a> ExactSizeIterator for DeviceIter<'a> { }

View File

@ -216,7 +216,15 @@ impl<'a> Iterator for StreamIter<'a> {
}
}
}
fn size_hint(&self) -> (usize, Option<usize>) {
unsafe {
((*self.ptr).nb_streams as usize, Some((*self.ptr).nb_streams as usize))
}
}
}
impl<'a> ExactSizeIterator for StreamIter<'a> { }
pub struct StreamIterMut<'a> {
ptr: *const AVFormatContext,
@ -245,7 +253,15 @@ impl<'a> Iterator for StreamIterMut<'a> {
}
}
}
fn size_hint(&self) -> (usize, Option<usize>) {
unsafe {
((*self.ptr).nb_streams as usize, Some((*self.ptr).nb_streams as usize))
}
}
}
impl<'a> ExactSizeIterator for StreamIterMut<'a> { }
pub struct PacketIter<'a> {
context: &'a mut Context,

View File

@ -113,4 +113,12 @@ impl<'a> Iterator for SideDataIter<'a> {
}
}
}
fn size_hint(&self) -> (usize, Option<usize>) {
unsafe {
((*self.ptr).nb_side_data as usize, Some((*self.ptr).nb_side_data as usize))
}
}
}
impl<'a> ExactSizeIterator for SideDataIter<'a> { }