Skip to main content

mago_syntax/parser/internal/
alloc.rs

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