Skip to main content

mago_syntax/parser/internal/
alloc.rs

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