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}