Skip to main content

StringArena

Struct StringArena 

Source
pub struct StringArena { /* private fields */ }
Expand description

Bump allocator backing arena-owned AzString instances.

Every AzString returned by StringArena::intern holds a cloned Arc to this arena; the backing bytes stay alive until the last such AzString (and the arena handle itself) is dropped.

Intended use: create one arena per XML/HTML parse pass, intern all tag names / attribute values / text content through it, then drop the handle. The AzStrings embedded in the resulting StyledDom keep the arena alive for as long as they need the bytes.

Implementations§

Source§

impl StringArena

Source

pub const CHUNK_SIZE: usize

Size of a freshly allocated chunk. Large enough that a typical DOM parse fits in 1-2 chunks, small enough to not over-allocate for small documents.

Source

pub fn new() -> Self

Source

pub fn metrics(&self) -> (usize, usize)

Returns (chunk_count, total_bytes_used) for metrics.

Source

pub fn intern(&mut self, s: &str) -> AzString

Intern s into the arena and return an AzString whose backing bytes live inside the arena. The returned AzString owns a cloned Arc reference; dropping it decrements the refcount, and the arena frees its chunks when the final reference is released.

Trait Implementations§

Source§

impl Default for StringArena

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.