1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/// Creates an `ArenaVec` backed by the given arena.
///
/// `arenavec!` allows `ArenaVec`s to be defined with a concise syntax.
/// The arena reference always follows the `in` keyword.
///
/// # Forms
///
/// **Empty:**
/// ```rust
/// # use fastarena::{Arena, ArenaVec, arenavec};
/// let mut arena = Arena::new();
/// let v: ArenaVec<u32> = arenavec![in &mut arena];
/// assert!(v.is_empty());
/// ```
///
/// **List of elements:**
/// ```rust
/// # use fastarena::{Arena, arenavec};
/// let mut arena = Arena::new();
/// let v = arenavec![in &mut arena; 1u32, 2, 3];
/// assert_eq!(v.as_slice(), &[1, 2, 3]);
/// ```
///
/// **Repeated element** (requires `T: Clone`):
/// ```rust
/// # use fastarena::{Arena, arenavec};
/// let mut arena = Arena::new();
/// let v = arenavec![in &mut arena; 0u32; 10];
/// assert_eq!(v.len(), 10);
/// assert_eq!(v.as_slice(), &[0; 10]);
/// ```