orx_fixed_vec/common_traits/
as_ref.rs1use crate::FixedVec;
2use core::ops::Deref;
3
4impl<T> AsRef<[T]> for FixedVec<T> {
5 fn as_ref(&self) -> &[T] {
6 &self.data
7 }
8}
9impl<T> AsMut<[T]> for FixedVec<T> {
10 fn as_mut(&mut self) -> &mut [T] {
11 &mut self.data
12 }
13}
14
15impl<T> Deref for FixedVec<T> {
16 type Target = [T];
17
18 fn deref(&self) -> &Self::Target {
19 &self.data
20 }
21}
22
23#[cfg(test)]
24mod tests {
25 use crate::prelude::*;
26 use core::ops::Deref;
27
28 #[test]
29 fn as_ref() {
30 let mut vec = FixedVec::new(4);
31 for i in 0..vec.capacity() {
32 vec.push(i);
33 }
34
35 assert_eq!(vec.as_ref(), &[0, 1, 2, 3]);
36 }
37
38 #[test]
39 fn deref() {
40 let mut vec = FixedVec::new(4);
41 for i in 0..vec.capacity() {
42 vec.push(i);
43 }
44
45 let slice = Deref::deref(&vec);
46 assert_eq!(slice, &[0, 1, 2, 3]);
47 assert_eq!(slice, vec.as_slice());
48 }
49
50 #[test]
51 fn as_mut() {
52 let mut vec = FixedVec::new(4);
53 for i in 0..vec.capacity() {
54 vec.push(i);
55 }
56
57 for x in vec.as_mut() {
58 *x *= 10;
59 }
60
61 assert_eq!(vec.as_ref(), &[0, 10, 20, 30]);
62 }
63}