[][src]Macro col_macros::vec_deque

macro_rules! vec_deque {
    (for $vec:expr, ins $( $back:expr ),*) => { ... };
    (for $vec:tt, ins $( $back:tt ,)*) => { ... };
    ($($front:expr),* => $($back:expr),*) => { ... };
    ($( $f:tt ,)* => $( $b:tt ,)*) => { ... };
    ($( $f:tt ,)* => $( $b:tt ),*) => { ... };
    ($( $f:tt ),* => $( $b:tt ,)*) => { ... };
    ($e:literal; $n:literal) => { ... };
    ($e:expr; $n:literal) => { ... };
    ($e:literal; $n:expr) => { ... };
    ($e:expr; $n:expr) => { ... };
}

Construct a double-ended queue of type Deque<T> which can be and is an alias to VecDeque in the types module.

Collections with a capacity,the push_back and push_front methods are accepted LinkedList not.

Examples

#![feature(proc_macro_hygiene)]
use col_macros::vec_deque;
use col_macros::types::Deque;

let mut vec = vec_deque![1, 2, 3 => 4, 5, 6];
let mut vec2 = { 
    let mut vec1 = Deque::new(); 
     
    vec1.push_front(1);
    vec1.push_front(2);
    vec1.push_front(3);
     
    vec1.push_back(4);
    vec1.push_back(5);
    vec1.push_back(6);
 
    vec1.push_back(7);
    vec1.push_back(8);
    vec1.push_back(9);
    vec1
};
 
vec_deque![for &mut vec, ins 7, 8].push_back(9); // we still have a mutable reference

assert_eq!(vec, vec2);