Permutations: Difference between revisions

→‎Recursive: switch to `VecDeque::from_iter`
(→‎Recursive: switch to `VecDeque::from_iter`)
Line 4,507:
===Recursive===
<lang rust>use std::collections::VecDeque;
 
fn permute<T, F: Fn(&[T])>(used: &mut Vec<T>, unused: &mut VecDeque<T>, action: &F) {
if unused.is_empty() {
Line 4,517 ⟶ 4,518:
}
}
}
 
// Same as the vec! macro, but for VecDeques as well
macro_rules! vec_deque {
($($item:expr),*) => {{
let mut deque = ::std::collections::VecDeque::new();
$(deque.push_back($item);)*
deque
}}
}
 
fn main() {
let mut queue = (1..4).collect::<VecDeque<_>>();
permute(&mut Vec::new(), &mut vec_deque![1,2,3]queue, &|perm| println!("{:?}", perm));
}</lang>