Skip to main content

luaur_common/methods/
vec_deque_vec_deque_vec_deque_alt_g.rs

1use crate::records::vec_deque::VecDeque;
2use core::ptr;
3
4impl<T: Clone> From<&[T]> for VecDeque<T> {
5    #[allow(non_snake_case)]
6    fn from(init: &[T]) -> Self {
7        let mut dq = VecDeque::<T>::new();
8        if !init.is_empty() {
9            let buf = dq.allocate(init.len());
10            dq.buffer = Some(buf);
11            dq.buffer_capacity = init.len();
12            dq.queue_size = init.len();
13            for (i, item) in init.iter().enumerate() {
14                unsafe {
15                    ptr::write(buf.as_ptr().add(i), item.clone());
16                }
17            }
18        }
19        dq
20    }
21}