offset-vec 0.3.6

Packer for Vec and String etc, for all methods index add a offset
Documentation
use core::ops::{IndexMut, Range, RangeFrom, RangeTo};

pub trait Slice
    : IndexMut<Range<usize>, Output = Self>
    + IndexMut<RangeTo<usize>, Output = Self>
    + IndexMut<RangeFrom<usize>, Output = Self>
{
    fn len(&self) -> usize;

    #[inline]
    fn is_empty(&self) -> bool {
        self.len() == 0
    }

    fn transform_index(&self, index: usize) -> usize;
}

impl<T> Slice for [T] {
    #[inline]
    fn len(&self) -> usize {
        self.len()
    }

    fn transform_index(&self, index: usize) -> usize {
        index
    }
}
impl Slice for str {
    #[inline]
    fn len(&self) -> usize {
        self.len()
    }

    fn transform_index(&self, index: usize) -> usize {
        crate::util::transform_char_index(self, index)
    }
}