1
2use crate::std::ops::{
3 RangeFull,
4 RangeFrom,
5 RangeTo,
6 Range,
7};
8
9pub trait IndexRange<T=usize> {
12 #[inline]
13 fn start(&self) -> Option<T> { None }
15 #[inline]
16 fn end(&self) -> Option<T> { None }
18}
19
20
21impl<T> IndexRange<T> for RangeFull {}
22
23impl<T: Copy> IndexRange<T> for RangeFrom<T> {
24 #[inline]
25 fn start(&self) -> Option<T> { Some(self.start) }
26}
27
28impl<T: Copy> IndexRange<T> for RangeTo<T> {
29 #[inline]
30 fn end(&self) -> Option<T> { Some(self.end) }
31}
32
33impl<T: Copy> IndexRange<T> for Range<T> {
34 #[inline]
35 fn start(&self) -> Option<T> { Some(self.start) }
36 #[inline]
37 fn end(&self) -> Option<T> { Some(self.end) }
38}
39