luaur-common 0.1.3

Foundational data structures and flags for the luaur Luau-in-Rust toolchain.
Documentation
use crate::records::vec_deque::VecDeque;
use core::ptr;

impl<T: Clone> From<&[T]> for VecDeque<T> {
    #[allow(non_snake_case)]
    fn from(init: &[T]) -> Self {
        let mut dq = VecDeque::<T>::new();
        if !init.is_empty() {
            let buf = dq.allocate(init.len());
            dq.buffer = Some(buf);
            dq.buffer_capacity = init.len();
            dq.queue_size = init.len();
            for (i, item) in init.iter().enumerate() {
                unsafe {
                    ptr::write(buf.as_ptr().add(i), item.clone());
                }
            }
        }
        dq
    }
}