Skip to main content

StringInterner

Struct StringInterner 

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

String interner for reducing memory usage of repeated strings.

Domain and predicate names are often repeated throughout the symbol table. This interner ensures each unique string is stored only once in memory.

§Example

use tensorlogic_adapters::StringInterner;

let mut interner = StringInterner::new();
let id1 = interner.intern("Person");
let id2 = interner.intern("Person");
assert_eq!(id1, id2); // Same string gets same ID

assert_eq!(interner.resolve(id1), Some("Person"));

Implementations§

Source§

impl StringInterner

Source

pub fn new() -> Self

Create a new string interner.

Source

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

Intern a string and return its unique ID.

If the string already exists, returns the existing ID. Otherwise, allocates a new ID and stores the string.

Source

pub fn resolve(&self, id: usize) -> Option<&str>

Resolve an ID back to its string.

Source

pub fn len(&self) -> usize

Get the number of unique strings interned.

Source

pub fn is_empty(&self) -> bool

Check if the interner is empty.

Source

pub fn clear(&mut self)

Clear all interned strings.

Source

pub fn memory_usage(&self) -> MemoryStats

Get memory usage statistics.

Trait Implementations§

Source§

impl Clone for StringInterner

Source§

fn clone(&self) -> StringInterner

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StringInterner

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for StringInterner

Source§

fn default() -> StringInterner

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.