1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use std::collections::VecDeque;
use crate::dice::{CollectionBuilder, SizeRange};
use crate::prelude::dice::*;
#[derive(Clone)]
pub struct VecDequeBuilder;
impl<T> CollectionBuilder<T, VecDeque<T>> for VecDequeBuilder {
fn build(self, elems: impl ExactSizeIterator<Item = T>) -> VecDeque<T> {
let mut vec = VecDeque::with_capacity(elems.len());
vec.extend(elems);
vec
}
}
pub fn vec_deque<T>(elem_die: impl Die<T>, len_range: impl SizeRange) -> impl Die<VecDeque<T>> {
let builder_die = dice::just(VecDequeBuilder);
dice::collection(builder_die, elem_die, len_range)
}