Type Definition coca::ArenaString
source · [−]pub type ArenaString<'a, I = usize> = String<ArenaStorage<'a, ArrayLayout<u8>>, I>;
Expand description
A string using an arena-allocated byte slice for storage.
Examples
use coca::arena::Arena;
use coca::ArenaString;
use core::mem::MaybeUninit;
let mut backing_region = [MaybeUninit::uninit(); 160];
let mut arena = Arena::from(&mut backing_region[..]);
let s: ArenaString<'_, usize> = arena.try_with_capacity(100).unwrap();
assert!(arena.try_with_capacity::<_, ArenaString<'_, usize>>(100).is_none());
Implementations
sourceimpl<'a, I: Capacity> ArenaString<'a, I>
impl<'a, I: Capacity> ArenaString<'a, I>
sourcepub fn from_boxed_str(string: Box<'a, str>) -> Self
pub fn from_boxed_str(string: Box<'a, str>) -> Self
Converts the given boxed str
slice into a String
.
Examples
use coca::arena::Arena;
use core::mem::MaybeUninit;
let mut backing_region = [MaybeUninit::uninit(); 1024];
let mut arena = Arena::from(&mut backing_region[..]);
let boxed_str = coca::fmt!(arena, "{}", 1234567890)?;
let mut string = coca::ArenaString::<'_, usize>::from_boxed_str(boxed_str);
string.retain(|c| (c as u8) % 2 == 1);
assert_eq!(string, "13579");
sourcepub fn into_boxed_str(self) -> Box<'a, str>ⓘNotable traits for Box<'_, I>impl<I: Iterator + ?Sized> Iterator for Box<'_, I> type Item = I::Item;
pub fn into_boxed_str(self) -> Box<'a, str>ⓘNotable traits for Box<'_, I>impl<I: Iterator + ?Sized> Iterator for Box<'_, I> type Item = I::Item;
Converts the ArenaString
into an owned str
slice.
Examples
use coca::arena::Arena;
use core::mem::MaybeUninit;
let mut backing_region = [MaybeUninit::uninit(); 1024];
let mut arena = Arena::from(&mut backing_region[..]);
let mut string = arena.string_with_capacity_from(16usize, "Hello, ");
string.push('W');
string.push_str("orld!");
let boxed_str = string.into_boxed_str();
assert_eq!(boxed_str.as_ref(), "Hello, World!");