diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2017-01-06 15:48:23 -0800 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2017-01-06 20:17:10 -0800 |
commit | c579d079939b5d4ee3127579de732f037e612c28 (patch) | |
tree | c5494720937e0c531c305663823761b137289a31 /src/index.rs | |
parent | ee5a9f133869809385bef96fcded4f22ddcc003f (diff) | |
download | alacritty-c579d079939b5d4ee3127579de732f037e612c28.tar.gz alacritty-c579d079939b5d4ee3127579de732f037e612c28.zip |
Remove need for range_contains feature
Diffstat (limited to 'src/index.rs')
-rw-r--r-- | src/index.rs | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/index.rs b/src/index.rs index b1f6f452..daec02f7 100644 --- a/src/index.rs +++ b/src/index.rs @@ -17,7 +17,7 @@ /// Indexing types and implementations for Grid and Line use std::cmp::{Ord, Ordering}; use std::fmt; -use std::ops::{self, Deref, Add, Range}; +use std::ops::{self, Deref, Add, Range, RangeInclusive}; /// The side of a cell #[derive(Debug, Copy, Clone, Eq, PartialEq)] @@ -210,6 +210,29 @@ impl<T> From<Range<T>> for IndexRange<T> { } } +// can be removed if range_contains is stabilized + +pub trait Contains { + type Content; + fn contains_(&self, item: Self::Content) -> bool; +} + +impl<T: PartialOrd<T>> Contains for Range<T> { + type Content = T; + fn contains_(&self, item: Self::Content) -> bool { + (self.start <= item) && (item < self.end) + } +} + +impl<T: PartialOrd<T>> Contains for RangeInclusive<T> { + type Content = T; + fn contains_(&self, item: Self::Content) -> bool { + if let &RangeInclusive::NonEmpty{ref start, ref end} = self { + (*start <= item) && (item <= *end) + } else { false } + } +} + macro_rules! ops { ($ty:ty, $construct:expr) => { add!($ty, $construct); |