aboutsummaryrefslogtreecommitdiff
path: root/src/grid.rs
diff options
context:
space:
mode:
authorJoe Wilm <joe@jwilm.com>2016-07-02 08:25:21 -0700
committerJoe Wilm <joe@jwilm.com>2016-07-02 08:25:21 -0700
commitf2e6d66a5e8ada1bd0c860eaa3d50e100a72f68b (patch)
tree276a91a1591026dc4b39b106c2742f91f9a9764f /src/grid.rs
parenta2ca10643f744244c635fb9b41a3c742e35213ea (diff)
downloadalacritty-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.rs23
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();
}
}