diff options
| author | djzin <noreply@github.com> | 2016-12-24 16:18:24 +0000 |
|---|---|---|
| committer | djzin <noreply@github.com> | 2017-01-14 16:51:51 +0000 |
| commit | 9f2f00aaad6c3aff1cf6b8ed015544c709a9fbfb (patch) | |
| tree | dd8866fcf2594a72ab7b0f3db3f0b63448a3c789 | |
| parent | 14b0ea8aa6886ef831b2e8074c5bbd7b36cc5679 (diff) | |
| download | rust-9f2f00aaad6c3aff1cf6b8ed015544c709a9fbfb.tar.gz rust-9f2f00aaad6c3aff1cf6b8ed015544c709a9fbfb.zip | |
allow unsized types in `RangeArgument`
| -rw-r--r-- | src/libcollections/range.rs | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/libcollections/range.rs b/src/libcollections/range.rs index 0326b92203a..1fa634362cf 100644 --- a/src/libcollections/range.rs +++ b/src/libcollections/range.rs @@ -73,7 +73,7 @@ pub trait RangeArgument<T: ?Sized> { // FIXME add inclusive ranges to RangeArgument -impl<T> RangeArgument<T> for RangeFull {} +impl<T: ?Sized> RangeArgument<T> for RangeFull {} impl<T> RangeArgument<T> for RangeFrom<T> { fn start(&self) -> Bound<&T> { @@ -113,3 +113,21 @@ 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, + } + } + + fn end(&self) -> Bound<&T> { + match *self { + (_, Included(end)) => Included(end), + (_, Excluded(end)) => Excluded(end), + (_, Unbounded) => Unbounded, + } + } +} |
