about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authordjzin <noreply@github.com>2016-12-27 10:22:17 +0000
committerdjzin <noreply@github.com>2017-01-14 16:51:51 +0000
commit58e597e1f7a3d08ea25651f6c6cb35bf18df5820 (patch)
tree9695f308fabc0af939b72f9507eb1d79019cd264 /src
parent54a3487fc53017661a82aeec8b2d1794ae4fce0f (diff)
downloadrust-58e597e1f7a3d08ea25651f6c6cb35bf18df5820.tar.gz
rust-58e597e1f7a3d08ea25651f6c6cb35bf18df5820.zip
make rangeargument methods non-default; simplify impl
Diffstat (limited to 'src')
-rw-r--r--src/libcollections/range.rs35
1 files changed, 18 insertions, 17 deletions
diff --git a/src/libcollections/range.rs b/src/libcollections/range.rs
index 1fa634362cf..1df4ace3777 100644
--- a/src/libcollections/range.rs
+++ b/src/libcollections/range.rs
@@ -41,9 +41,7 @@ pub trait RangeArgument<T: ?Sized> {
     /// assert_eq!((3..10).start(), Included(&3));
     /// # }
     /// ```
-    fn start(&self) -> Bound<&T> {
-        Unbounded
-    }
+    fn start(&self) -> Bound<&T>;
 
     /// End index bound
     ///
@@ -66,22 +64,33 @@ pub trait RangeArgument<T: ?Sized> {
     /// assert_eq!((3..10).end(), Excluded(&10));
     /// # }
     /// ```
-    fn end(&self) -> Bound<&T> {
-        Unbounded
-    }
+    fn end(&self) -> Bound<&T>;
 }
 
 // FIXME add inclusive ranges to RangeArgument
 
-impl<T: ?Sized> RangeArgument<T> for RangeFull {}
+impl<T: ?Sized> RangeArgument<T> for RangeFull {
+    fn start(&self) -> Bound<&T> {
+        Unbounded
+    }
+    fn end(&self) -> Bound<&T> {
+        Unbounded
+    }
+}
 
 impl<T> RangeArgument<T> for RangeFrom<T> {
     fn start(&self) -> Bound<&T> {
         Included(&self.start)
     }
+    fn end(&self) -> Bound<&T> {
+        Unbounded
+    }
 }
 
 impl<T> RangeArgument<T> for RangeTo<T> {
+    fn start(&self) -> Bound<&T> {
+        Unbounded
+    }
     fn end(&self) -> Bound<&T> {
         Excluded(&self.end)
     }
@@ -116,18 +125,10 @@ impl<T> RangeArgument<T> for (Bound<T>, Bound<T>) {
 
 impl<'a, T: ?Sized + 'a> RangeArgument<T> for (Bound<&'a T>, Bound<&'a T>) {
     fn start(&self) -> Bound<&T> {
-        match *self {
-            (Included(start), _) => Included(start),
-            (Excluded(start), _) => Excluded(start),
-            (Unbounded, _)       => Unbounded,
-        }
+        self.0
     }
 
     fn end(&self) -> Bound<&T> {
-        match *self {
-            (_, Included(end)) => Included(end),
-            (_, Excluded(end)) => Excluded(end),
-            (_, Unbounded)     => Unbounded,
-        }
+        self.1
     }
 }