```rust trait Storage { type Mem: Deref + DerefMut; } enum Inline {} impl Storage for Inline { type Mem = [T; N]; } enum Borrowed<'a> {} impl<'a> Storage for Borrowed<'a> { type Mem = &'a mut [T]; } enum Heap {} impl Storage for Heap { type Mem = Box<[T]>; } struct Vec { mem: S::Mem, len: usize, }