From 54ec44c7621ead638db2a93f8680502c44962f62 Mon Sep 17 00:00:00 2001 From: Luca Barbato <lu_zero@gentoo.org> Date: Fri, 28 Sep 2018 16:57:07 +0200 Subject: [PATCH] Extend the implementation of IterWidth Implement ExactSizeIterator and FusedIterator. --- src/plane.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/plane.rs b/src/plane.rs index 9c38ac7e..45a1f42d 100644 --- a/src/plane.rs +++ b/src/plane.rs @@ -232,7 +232,6 @@ pub struct IterWidth<'a> { width: usize, } -// TODO: Implement more methods impl<'a> Iterator for IterWidth<'a> { type Item = &'a [u16]; @@ -250,8 +249,20 @@ impl<'a> Iterator for IterWidth<'a> { Some(&self.ps.plane.data[base..base + self.width]) } } + + #[inline] + fn size_hint(&self) -> (usize, Option<usize>) { + let size = self.ps.plane.cfg.height - self.ps.y as usize; + + (size, Some(size)) + } } +impl<'a> ExactSizeIterator for IterWidth<'a> { } + +use std::iter::FusedIterator; +impl<'a> FusedIterator for IterWidth<'a> { } + impl<'a> PlaneSlice<'a> { pub fn as_slice(&'a self) -> &'a [u16] { let stride = self.plane.cfg.stride; -- GitLab