luaur_common/methods/
vec_deque_destroy_elements.rs1use crate::records::vec_deque::VecDeque;
2use core::cmp;
3use core::ptr;
4
5impl<T> VecDeque<T> {
6 #[allow(non_snake_case)]
7 pub(crate) fn destroyElements(&mut self) {
8 if let Some(buf) = self.buffer {
9 let head_size = cmp::min(self.queue_size, self.capacity().saturating_sub(self.head));
10 let tail_size = self.queue_size - head_size;
11
12 unsafe {
13 for i in 0..head_size {
14 ptr::drop_in_place(buf.as_ptr().add(self.head + i));
15 }
16 for i in 0..tail_size {
17 ptr::drop_in_place(buf.as_ptr().add(i));
18 }
19 }
20 }
21 }
22}