[][src]Struct batching_queue::Queue

pub struct Queue<T> where
    T: Groupable
{ /* fields omitted */ }

The Queue

Stores elements in groups as defined by their implementation of Groupable.

#[derive(Debug, PartialEq, Eq)]
enum Group {
    G1,
    G2
}

use Group::{G1, G2};
let mut q = Queue::new();
q.push(G1);
q.push(G2);
q.push(G1);
assert_eq!(q.pop(), Some(G1));
assert_eq!(q.pop(), Some(G1));
assert_eq!(q.pop(), Some(G2));
assert_eq!(q.pop(), None);

Implementations

impl<T: Groupable> Queue<T>[src]

pub fn new() -> Self[src]

Construct an empty queue

#[derive(Debug, PartialEq, Eq)]
enum Group {
    G1,
    G2
}

use Group::{G1, G2};
let q = Queue::<Group>::new();

pub fn is_empty(&self) -> bool[src]

Check if the queue is empty

#[derive(Debug, PartialEq, Eq)]
enum Group {
    G1,
    G2
}

use Group::{G1, G2};
let mut q = Queue::new();
assert!(q.is_empty());
q.push(G1);
assert!(!q.is_empty());

pub fn push(&mut self, val: T)[src]

Push the value into the queue

#[derive(Debug, PartialEq, Eq)]
enum Group {
    G1,
    G2
}

use Group::{G1, G2};
let mut q = Queue::new();
q.push(G1);
q.push(G2);

pub fn pop(&mut self) -> Option<T>[src]

Pop the head from the queue

#[derive(Debug, PartialEq, Eq)]
enum Group {
    G1,
    G2
}

use Group::{G1, G2};
let mut q = Queue::new();
q.push(G1);
assert_eq!(q.pop(), Some(G1));
assert_eq!(q.pop(), None);

pub fn pop_group(&mut self) -> Vec<T>[src]

Pop a whole group from the front of the queue and return a vector of the popped elements

An empty vector is returned if the queue is empty

#[derive(Debug, PartialEq, Eq)]
enum Group {
    G1,
    G2
}

use Group::{G1, G2};
let mut q = Queue::new();
q.push(G1);
q.push(G2);
q.push(G1);
assert_eq!(q.pop_group(), [G1, G1]);

Trait Implementations

impl<T: Debug> Debug for Queue<T> where
    T: Groupable
[src]

impl<T: Groupable> Drop for Queue<T>[src]

Auto Trait Implementations

impl<T> RefUnwindSafe for Queue<T> where
    T: RefUnwindSafe

impl<T> Send for Queue<T> where
    T: Send

impl<T> Sync for Queue<T> where
    T: Sync

impl<T> Unpin for Queue<T> where
    T: Unpin

impl<T> UnwindSafe for Queue<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.