aboutsummaryrefslogtreecommitdiff
path: root/src/index.rs
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2017-01-06 15:48:23 -0800
committerManish Goregaokar <manishsmail@gmail.com>2017-01-06 20:17:10 -0800
commitc579d079939b5d4ee3127579de732f037e612c28 (patch)
treec5494720937e0c531c305663823761b137289a31 /src/index.rs
parentee5a9f133869809385bef96fcded4f22ddcc003f (diff)
downloadalacritty-c579d079939b5d4ee3127579de732f037e612c28.tar.gz
alacritty-c579d079939b5d4ee3127579de732f037e612c28.zip
Remove need for range_contains feature
Diffstat (limited to 'src/index.rs')
-rw-r--r--src/index.rs25
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);