1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
extern crate core;
#[macro_use]
mod index_macro;
use core::default::Default;
pub use core::ops::IndexMut;
pub use core::ops::Index;
pub use core::ops::Range;
pub trait SliceWrapper<T> {
fn slice(& self) -> & [T];
fn len(&self) -> usize{
self.slice().len()
}
}
pub trait SliceWrapperMut<T> : SliceWrapper<T> {
fn slice_mut (&mut self) -> & mut [T];
}
pub trait AllocatedSlice<T>
: SliceWrapperMut<T> + SliceWrapper<T> + Default {
}
impl<T, U> AllocatedSlice<T> for U where U : SliceWrapperMut<T> + SliceWrapper<T> + Default {
}