use crate::utils::ptr_ext::MutPtrExt; use std::cell::UnsafeCell; use std::collections::VecDeque; pub struct SyncQueue { el: UnsafeCell>, } impl Default for SyncQueue { fn default() -> Self { Self { el: Default::default(), } } } impl SyncQueue { pub fn push(&self, t: T) { unsafe { self.el.get().deref_mut().push_back(t); } } pub fn pop(&self) -> Option { unsafe { self.el.get().deref_mut().pop_front() } } }