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
26
27
28
29
use crate::MiniVec;
impl<T> core::ops::Deref for MiniVec<T> {
type Target = [T];
fn deref(&self) -> &Self::Target {
if self.is_default() {
return &[];
}
let header = self.header();
let data = self.data();
let len = header.len;
unsafe { core::slice::from_raw_parts(data, len) }
}
}
impl<T> core::ops::DerefMut for MiniVec<T> {
fn deref_mut(&mut self) -> &mut Self::Target {
if self.is_default() {
return &mut [];
}
let header = self.header();
let data = self.data();
let len = header.len;
unsafe { core::slice::from_raw_parts_mut(data, len) }
}
}