Skip to main content

mago_syntax/parser/internal/
alloc.rs

1use bumpalo::collections::Vec;
2use bumpalo::vec;
3
4use crate::parser::Parser;
5
6impl<'arena> Parser<'_, 'arena> {
7    /// Creates a new empty vector in the parser's arena.
8    #[inline]
9    #[must_use]
10    pub fn new_vec<T>(&self) -> Vec<'arena, T> {
11        Vec::new_in(self.arena)
12    }
13
14    /// Creates a new vector with a single value in the parser's arena.
15    #[inline]
16    #[must_use]
17    pub fn new_vec_of<T>(&self, value: T) -> Vec<'arena, T> {
18        vec![in self.arena; value]
19    }
20
21    /// Allocates a byte slice in the parser's arena.
22    #[inline]
23    #[must_use]
24    pub fn bytes(&self, bytes: &[u8]) -> &'arena [u8] {
25        self.arena.alloc_slice_copy(bytes)
26    }
27}