From 4fa37704113518404084adbf15f1fdf350b42060 Mon Sep 17 00:00:00 2001 From: "Sergey \"Shnatsel\" Davidoff" Date: Mon, 2 Jan 2023 15:35:53 +0100 Subject: [PATCH 1/2] Implement size hints for FlatSampleIterator --- src/image/mod.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/image/mod.rs b/src/image/mod.rs index 43a59c9a..2f76441a 100644 --- a/src/image/mod.rs +++ b/src/image/mod.rs @@ -530,8 +530,14 @@ impl Iterator for FlatSampleIterator<'_> { } else { None } } + + fn size_hint(&self) -> (usize, Option) { + let remaining = self.layer.channel_data.list.len() - self.channel_index; + (remaining, Some(remaining)) + } } +impl ExactSizeIterator for FlatSampleIterator<'_> {} impl AnyChannels{ From 0aa407e667177bb391c2ebd0f85db59d04f5b29a Mon Sep 17 00:00:00 2001 From: "Sergey \"Shnatsel\" Davidoff" Date: Mon, 2 Jan 2023 16:05:38 +0100 Subject: [PATCH 2/2] Also implement nth() --- src/image/mod.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/image/mod.rs b/src/image/mod.rs index 2f76441a..a6153db6 100644 --- a/src/image/mod.rs +++ b/src/image/mod.rs @@ -531,8 +531,13 @@ impl Iterator for FlatSampleIterator<'_> { else { None } } + fn nth(&mut self, pos: usize) -> Option { + self.channel_index += pos; + self.next() + } + fn size_hint(&self) -> (usize, Option) { - let remaining = self.layer.channel_data.list.len() - self.channel_index; + let remaining = self.layer.channel_data.list.len().saturating_sub(self.channel_index); (remaining, Some(remaining)) } }