From 58e597e1f7a3d08ea25651f6c6cb35bf18df5820 Mon Sep 17 00:00:00 2001 From: djzin Date: Tue, 27 Dec 2016 10:22:17 +0000 Subject: [PATCH] make rangeargument methods non-default; simplify impl --- src/libcollections/range.rs | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/libcollections/range.rs b/src/libcollections/range.rs index 1fa634362cfa..1df4ace37770 100644 --- a/src/libcollections/range.rs +++ b/src/libcollections/range.rs @@ -41,9 +41,7 @@ pub trait RangeArgument { /// 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 { /// assert_eq!((3..10).end(), Excluded(&10)); /// # } /// ``` + fn end(&self) -> Bound<&T>; +} + +// FIXME add inclusive ranges to RangeArgument + +impl RangeArgument for RangeFull { + fn start(&self) -> Bound<&T> { + Unbounded + } fn end(&self) -> Bound<&T> { Unbounded } } -// FIXME add inclusive ranges to RangeArgument - -impl RangeArgument for RangeFull {} - impl RangeArgument for RangeFrom { fn start(&self) -> Bound<&T> { Included(&self.start) } + fn end(&self) -> Bound<&T> { + Unbounded + } } impl RangeArgument for RangeTo { + fn start(&self) -> Bound<&T> { + Unbounded + } fn end(&self) -> Bound<&T> { Excluded(&self.end) } @@ -116,18 +125,10 @@ impl RangeArgument for (Bound, Bound) { impl<'a, T: ?Sized + 'a> RangeArgument 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 } }