Преглед изворни кода

util/ringbuffer: Implement indexing

parazyd пре 2 година
родитељ
комит
70ff536034
1 измењених фајлова са 14 додато и 0 уклоњено
  1. 14 0
      src/util/ringbuffer.rs

+ 14 - 0
src/util/ringbuffer.rs

@@ -71,6 +71,20 @@ impl<T: Eq + PartialEq + Clone, const N: usize> RingBuffer<T, N> {
     pub fn to_vec(&self) -> Vec<T> {
         self.0.iter().cloned().collect()
     }
+
+    /// Rearranges the internal storage of this deque so it is one contiguous slice.
+    pub fn make_contiguous(&mut self) -> &mut [T] {
+        self.0.make_contiguous()
+    }
+}
+
+impl<T, const N: usize> std::ops::Index<usize> for RingBuffer<T, N> {
+    type Output = T;
+
+    #[inline]
+    fn index(&self, index: usize) -> &T {
+        self.0.get(index).expect("Out of bounds access")
+    }
 }
 
 #[cfg(test)]