use crate::{Dyn, TreeVariant, traversal::enumeration::Enumeration};
use alloc::collections::VecDeque;
use orx_selfref_col::NodePtr;
pub type Item<V, E> = <E as Enumeration>::Item<NodePtr<V>>;
pub struct Queue<E: Enumeration> {
queue: VecDeque<Item<Dyn<i32>, E>>,
}
impl<E: Enumeration> Queue<E> {
pub(crate) fn for_variant<V>(&mut self) -> &mut VecDeque<Item<V, E>>
where
V: TreeVariant,
{
unsafe { core::mem::transmute(&mut self.queue) }
}
}
impl<E: Enumeration> Default for Queue<E> {
fn default() -> Self {
Self {
queue: Default::default(),
}
}
}