orx_fixed_vec/common_traits/
as_ref.rs

1use 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}