diff options
| author | Mike White <botahamec@outlook.com> | 2021-09-06 08:18:06 -0400 |
|---|---|---|
| committer | Mike White <botahamec@outlook.com> | 2021-09-06 08:18:06 -0400 |
| commit | cbdd3f7be61f1040e84b757a5b8404378de3c46c (patch) | |
| tree | 8c6cdca5d9bb40adb2133a1ec4298812d688a5ef /model/src/possible_moves.rs | |
| parent | 21db0e1056d961b83ccf6d7e2feb06eded25174e (diff) | |
Added some efficient iterator methods
Diffstat (limited to 'model/src/possible_moves.rs')
| -rw-r--r-- | model/src/possible_moves.rs | 35 |
1 files changed, 35 insertions, 0 deletions
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<usize>) { + 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<Self::Item> + where + Self: Sized, + { + Some(unsafe { self.moves.as_ref().get_unchecked(self.length).assume_init() }) + } + + // TODO test + fn nth(&mut self, n: usize) -> Option<Self::Item> { + 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 { |
