Skip to main content

luaur_common/methods/
vec_deque_destroy_elements.rs

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