1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
/// Every index type to be used with Stash needs to implement this trait
pub trait Index {
/// Create an index from `usize`.
///
/// This method should panic if `idx` is out of acceptable range.
fn from_usize(idx: usize) -> Self;
/// Turn this index into `usize`
fn into_usize(self) -> usize;
}
// Auto implement this for types equivalent to `usize`.
impl<T> Index for T
where
T: From<usize> + Into<usize>,
{
fn from_usize(idx: usize) -> Self {
From::from(idx)
}
fn into_usize(self) -> usize {
Into::into(self)
}
}