diff --git a/gstreamer-audio/src/audio_format.rs b/gstreamer-audio/src/audio_format.rs index 2d3ffa457..10db2259a 100644 --- a/gstreamer-audio/src/audio_format.rs +++ b/gstreamer-audio/src/audio_format.rs @@ -263,14 +263,20 @@ impl Iterator for AudioFormatIterator { Some(fmt) } } -} -impl ExactSizeIterator for AudioFormatIterator { - fn len(&self) -> usize { - self.len + fn size_hint(&self) -> (usize, Option) { + if self.idx == self.len { + return (0, Some(0)); + } + + let remaining = (self.len - self.idx) as usize; + + (remaining, Some(remaining)) } } +impl ExactSizeIterator for AudioFormatIterator {} + impl DoubleEndedIterator for AudioFormatIterator { fn next_back(&mut self) -> Option { if self.idx >= self.len { diff --git a/gstreamer-video/src/video_format.rs b/gstreamer-video/src/video_format.rs index 6b90ace76..55aa36271 100644 --- a/gstreamer-video/src/video_format.rs +++ b/gstreamer-video/src/video_format.rs @@ -402,14 +402,20 @@ impl Iterator for VideoFormatIterator { Some(fmt) } } -} -impl ExactSizeIterator for VideoFormatIterator { - fn len(&self) -> usize { - self.len + fn size_hint(&self) -> (usize, Option) { + if self.idx == self.len { + return (0, Some(0)); + } + + let remaining = (self.len - self.idx) as usize; + + (remaining, Some(remaining)) } } +impl ExactSizeIterator for VideoFormatIterator {} + impl DoubleEndedIterator for VideoFormatIterator { fn next_back(&mut self) -> Option { if self.idx >= self.len {