diff options
author | Joe Wilm <joe@jwilm.com> | 2016-07-02 08:25:21 -0700 |
---|---|---|
committer | Joe Wilm <joe@jwilm.com> | 2016-07-02 08:25:21 -0700 |
commit | f2e6d66a5e8ada1bd0c860eaa3d50e100a72f68b (patch) | |
tree | 276a91a1591026dc4b39b106c2742f91f9a9764f /src/grid.rs | |
parent | a2ca10643f744244c635fb9b41a3c742e35213ea (diff) | |
download | alacritty-f2e6d66a5e8ada1bd0c860eaa3d50e100a72f68b.tar.gz alacritty-f2e6d66a5e8ada1bd0c860eaa3d50e100a72f68b.zip |
Improve ergonomics of iterating on grid::Row
Iterating on grid::Row types no longer requires calls to iter() or
iter_mut().
Diffstat (limited to 'src/grid.rs')
-rw-r--r-- | src/grid.rs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/grid.rs b/src/grid.rs index 3ce15280..042aabb7 100644 --- a/src/grid.rs +++ b/src/grid.rs @@ -16,7 +16,8 @@ use std::ops::{Index, IndexMut, Deref, DerefMut, Range, RangeTo, RangeFrom, RangeFull}; use std::cmp::Ordering; -use std::slice::{Iter, IterMut}; +use std::slice::{self, Iter, IterMut}; +use std::iter::IntoIterator; use util::Rotate; @@ -233,6 +234,24 @@ impl Row { } } +impl<'a> IntoIterator for &'a Row { + type Item = &'a Cell; + type IntoIter = slice::Iter<'a, Cell>; + + fn into_iter(self) -> slice::Iter<'a, Cell> { + self.iter() + } +} + +impl<'a> IntoIterator for &'a mut Row { + type Item = &'a mut Cell; + type IntoIter = slice::IterMut<'a, Cell>; + + fn into_iter(mut self) -> slice::IterMut<'a, Cell> { + self.iter_mut() + } +} + impl Deref for Row { type Target = Vec<Cell>; fn deref(&self) -> &Self::Target { @@ -295,7 +314,7 @@ macro_rules! clear_region_impl { impl ClearRegion<$range> for Grid { fn clear_region(&mut self, region: $range) { for row in self.raw[region].iter_mut() { - for cell in row.iter_mut() { + for cell in row { cell.reset(); } } |