diff options
-rw-r--r-- | src/lib.rs | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -87,3 +87,35 @@ impl std::ops::Index<usize> for Buffer { impl std::ops::IndexMut<usize> for Buffer { fn index_mut(&mut self, i: usize) -> &mut Colour { &mut self.array[i] } } + +impl std::ops::Deref for Buffer { + type Target = [Colour]; + + fn deref(&self) -> &[Colour] { + self.pixels.as_slice() + } +} + +impl std::ops::DerefMut for Buffer { + fn deref_mut(&mut self) -> &mut [Colour] { + self.pixels.as_mut_slice() + } +} + +impl<'a> IntoIterator for &'a Buffer { + type Item = &'a Colour; + type IntoIter = std::slice::Iter<'a, Colour>; + + fn into_iter(self) -> Self::IntoIter { + self.array.iter() + } +} + +impl<'a> IntoIterator for &'a mut Buffer { + type Item = &'a mut Colour; + type IntoIter = std::slice::IterMut<'a, Colour>; + + fn into_iter(self) -> Self::IntoIter { + self.array.iter_mut() + } +} |