pub struct StringTableBuilder { /* private fields */ }Expand description
String table builder for constructing string tables during serialization
This builder accumulates strings and tracks their offsets/lengths. Strings are automatically null-terminated and concatenated with no padding.
§Examples
use aion_context::string_table::StringTableBuilder;
let mut builder = StringTableBuilder::new();
let (offset, length) = builder.add("Hello, world!");
assert_eq!(offset, 0);
assert_eq!(length, 13);
let bytes = builder.build();
assert_eq!(bytes, b"Hello, world!\0");Implementations§
Source§impl StringTableBuilder
impl StringTableBuilder
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new empty string table builder
§Examples
use aion_context::string_table::StringTableBuilder;
let builder = StringTableBuilder::new();
assert_eq!(builder.len(), 0);
assert!(builder.is_empty());Sourcepub fn with_capacity(capacity: usize) -> Self
pub fn with_capacity(capacity: usize) -> Self
Create a builder with pre-allocated capacity
§Examples
use aion_context::string_table::StringTableBuilder;
let builder = StringTableBuilder::with_capacity(1024);
assert_eq!(builder.len(), 0);Sourcepub fn add(&mut self, s: &str) -> (u64, u32)
pub fn add(&mut self, s: &str) -> (u64, u32)
Add a string to the table
Returns (offset, length) where:
offsetis the byte offset of the string’s first characterlengthis the string length in bytes (excluding null terminator)
The string is automatically null-terminated and appended to the table.
§Examples
use aion_context::string_table::StringTableBuilder;
let mut builder = StringTableBuilder::new();
let (offset1, len1) = builder.add("First");
assert_eq!(offset1, 0);
assert_eq!(len1, 5);
let (offset2, len2) = builder.add("Second");
assert_eq!(offset2, 6); // "First\0" = 6 bytes
assert_eq!(len2, 6);Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Get the current total size in bytes
This includes all strings and their null terminators.
§Examples
use aion_context::string_table::StringTableBuilder;
let mut builder = StringTableBuilder::new();
assert_eq!(builder.len(), 0);
builder.add("Hello");
assert_eq!(builder.len(), 6); // "Hello\0"
builder.add("World");
assert_eq!(builder.len(), 12); // "Hello\0World\0"Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Check if the table is empty
§Examples
use aion_context::string_table::StringTableBuilder;
let mut builder = StringTableBuilder::new();
assert!(builder.is_empty());
builder.add("Test");
assert!(!builder.is_empty());Sourcepub fn build(self) -> Vec<u8> ⓘ
pub fn build(self) -> Vec<u8> ⓘ
Build the final string table as a byte vector
Returns the complete string table with all null terminators.
§Examples
use aion_context::string_table::StringTableBuilder;
let mut builder = StringTableBuilder::new();
builder.add("Alpha");
builder.add("Beta");
let bytes = builder.build();
assert_eq!(bytes, b"Alpha\0Beta\0");Trait Implementations§
Source§impl Clone for StringTableBuilder
impl Clone for StringTableBuilder
Source§fn clone(&self) -> StringTableBuilder
fn clone(&self) -> StringTableBuilder
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for StringTableBuilder
impl Debug for StringTableBuilder
Source§impl Default for StringTableBuilder
impl Default for StringTableBuilder
Source§fn default() -> StringTableBuilder
fn default() -> StringTableBuilder
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for StringTableBuilder
impl RefUnwindSafe for StringTableBuilder
impl Send for StringTableBuilder
impl Sync for StringTableBuilder
impl Unpin for StringTableBuilder
impl UnsafeUnpin for StringTableBuilder
impl UnwindSafe for StringTableBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more