diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/grid.rs | 14 | ||||
-rw-r--r-- | src/util.rs | 15 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/grid.rs b/src/grid.rs index 1c5b94c4..af3a8ae4 100644 --- a/src/grid.rs +++ b/src/grid.rs @@ -146,6 +146,10 @@ impl<T> Grid<T> { self.cols } + pub fn iter_rows(&self) -> slice::Iter<Row<T>> { + self.raw.iter() + } + #[inline] pub fn scroll_down(&mut self, region: Range<index::Line>, positions: index::Line) { for line in IndexRange(region).rev() { @@ -334,6 +338,16 @@ impl<T> Row<T> { } } +impl<'a, T> IntoIterator for &'a Grid<T> { + type Item = &'a Row<T>; + type IntoIter = slice::Iter<'a, Row<T>>; + + #[inline] + fn into_iter(self) -> slice::Iter<'a, Row<T>> { + self.raw.iter() + } +} + impl<'a, T> IntoIterator for &'a Row<T> { type Item = &'a T; type IntoIter = slice::Iter<'a, T>; diff --git a/src/util.rs b/src/util.rs index 3452e5b2..7227f1a0 100644 --- a/src/util.rs +++ b/src/util.rs @@ -77,6 +77,21 @@ pub mod fmt { /// Write a `Display` or `Debug` escaped with Yellow pub struct Yellow => "33"; } + + /// Write a `Display` or `Debug` escaped with Red + pub struct Green<T>(pub T); + + impl<T: fmt::Display> fmt::Display for Green<T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "\x1b[32m{}\x1b[0m", self.0) + } + } + + impl<T: fmt::Debug> fmt::Debug for Green<T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "\x1b[32m{:?}\x1b[0m", self.0) + } + } } #[cfg(test)] |