Struct rustc_data_structures::work_queue::WorkQueue [−][src]
pub struct WorkQueue<T: Idx> { /* fields omitted */ }
A work queue is a handy data structure for tracking work left to do. (For example, basic blocks left to process.) It is basically a de-duplicating queue; so attempting to insert X if X is already enqueued has no effect. This implementation assumes that the elements are dense indices, so it can allocate the queue to size and also use a bit set to track occupancy.
Methods
impl<T: Idx> WorkQueue<T>
[src]
impl<T: Idx> WorkQueue<T>
pub fn with_all(len: usize) -> Self
[src]
pub fn with_all(len: usize) -> Self
Create a new work queue with all the elements from (0..len).
pub fn with_none(len: usize) -> Self
[src]
pub fn with_none(len: usize) -> Self
Create a new work queue that starts empty, where elements range from (0..len).
pub fn insert(&mut self, element: T) -> bool
[src]
pub fn insert(&mut self, element: T) -> bool
Attempt to enqueue element
in the work queue. Returns false if it was already present.
pub fn pop(&mut self) -> Option<T>
[src]
pub fn pop(&mut self) -> Option<T>
Attempt to enqueue element
in the work queue. Returns false if it was already present.
pub fn is_empty(&self) -> bool
[src]
pub fn is_empty(&self) -> bool
True if nothing is enqueued.