orx_fixed_vec/common_traits/
index.rs

1use crate::FixedVec;
2use core::ops::{Index, IndexMut};
3use core::slice::SliceIndex;
4
5impl<T, I> Index<I> for FixedVec<T>
6where
7    I: SliceIndex<[T]>,
8{
9    type Output = I::Output;
10
11    fn index(&self, index: I) -> &Self::Output {
12        &self.data[index]
13    }
14}
15impl<T, I> IndexMut<I> for FixedVec<T>
16where
17    I: SliceIndex<[T]>,
18{
19    fn index_mut(&mut self, index: I) -> &mut Self::Output {
20        &mut self.data[index]
21    }
22}
23
24#[cfg(test)]
25mod tests {
26    use crate::prelude::*;
27
28    #[test]
29    fn index() {
30        let mut vec = FixedVec::new(42);
31        for i in 0..vec.capacity() / 2 {
32            vec.push(i);
33        }
34
35        for i in 0..vec.len() {
36            assert_eq!(i, vec[i]);
37        }
38
39        vec[7] = 77;
40        assert_eq!(77, vec[7]);
41    }
42}