From cbdd3f7be61f1040e84b757a5b8404378de3c46c Mon Sep 17 00:00:00 2001 From: Mike White Date: Mon, 6 Sep 2021 08:18:06 -0400 Subject: Added some efficient iterator methods --- model/src/possible_moves.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/model/src/possible_moves.rs b/model/src/possible_moves.rs index 50ad774..98a25e2 100644 --- a/model/src/possible_moves.rs +++ b/model/src/possible_moves.rs @@ -106,6 +106,41 @@ impl Iterator for PossibleMovesIter { None } } + + // TODO test + fn size_hint(&self) -> (usize, Option) { + let remaining = self.length - self.index; + (remaining, Some(remaining)) + } + + // TODO test + fn count(self) -> usize + where + Self: Sized, + { + self.length - self.index + } + + // TODO test + fn last(self) -> Option + where + Self: Sized, + { + Some(unsafe { self.moves.as_ref().get_unchecked(self.length).assume_init() }) + } + + // TODO test + fn nth(&mut self, n: usize) -> Option { + if self.length - self.index < n { + None + } else { + self.index += n; + let current_move = + unsafe { self.moves.as_ref().get_unchecked(self.length).assume_init() }; + self.index += 1; + Some(current_move) + } + } } impl Drop for PossibleMovesIter { -- cgit v1.2.3