rangetools 0.1.4

Extending the Rust Range structs found in std::ops
Documentation
use crate::UpperBoundedRange;

impl std::ops::Index<UpperBoundedRange<usize>> for String {
    type Output = str;
    fn index(&self, r: UpperBoundedRange<usize>) -> &Self::Output {
        &self[std::ops::RangeTo::from(r)]
    }
}

impl std::ops::IndexMut<UpperBoundedRange<usize>> for String {
    fn index_mut(&mut self, r: UpperBoundedRange<usize>) -> &mut Self::Output {
        &mut self[std::ops::RangeTo::from(r)]
    }
}

impl std::ops::Index<UpperBoundedRange<usize>> for str {
    type Output = str;
    fn index(&self, r: UpperBoundedRange<usize>) -> &Self::Output {
        &self[std::ops::RangeTo::from(r)]
    }
}

impl std::ops::IndexMut<UpperBoundedRange<usize>> for str {
    fn index_mut(&mut self, r: UpperBoundedRange<usize>) -> &mut Self::Output {
        &mut self[std::ops::RangeTo::from(r)]
    }
}

impl<T> std::ops::Index<UpperBoundedRange<usize>> for [T] {
    type Output = [T];
    fn index(&self, r: UpperBoundedRange<usize>) -> &Self::Output {
        &self[std::ops::RangeTo::from(r)]
    }
}

impl<T> std::ops::IndexMut<UpperBoundedRange<usize>> for [T] {
    fn index_mut(&mut self, r: UpperBoundedRange<usize>) -> &mut Self::Output {
        &mut self[std::ops::RangeTo::from(r)]
    }
}

impl<T> std::ops::Index<UpperBoundedRange<usize>> for Vec<T> {
    type Output = [T];
    fn index(&self, r: UpperBoundedRange<usize>) -> &Self::Output {
        &self[std::ops::RangeTo::from(r)]
    }
}

impl<T> std::ops::IndexMut<UpperBoundedRange<usize>> for Vec<T> {
    fn index_mut(&mut self, r: UpperBoundedRange<usize>) -> &mut Self::Output {
        &mut self[std::ops::RangeTo::from(r)]
    }
}