pub struct StringInterner { /* private fields */ }Expand description
A string interner that deduplicates strings.
This is useful for reducing memory usage when many strings with the same content are created, such as account names and currencies in a large ledger.
Implementations§
Source§impl StringInterner
impl StringInterner
Sourcepub fn with_capacity(capacity: usize) -> Self
pub fn with_capacity(capacity: usize) -> Self
Create an interner with pre-allocated capacity.
Sourcepub fn intern(&mut self, s: &str) -> InternedStr
pub fn intern(&mut self, s: &str) -> InternedStr
Intern a string.
If the string already exists in the interner, returns a reference to the existing copy. Otherwise, stores the string and returns a reference to the new copy.
Sourcepub fn intern_with_status(&mut self, s: &str) -> (InternedStr, bool)
pub fn intern_with_status(&mut self, s: &str) -> (InternedStr, bool)
Intern a string, also returning whether it was newly inserted.
Equivalent to Self::intern but exposes the insertion bit
without a second hash lookup. Useful for dedup-counting passes
(see rustledger_loader::dedup) that previously called
contains then intern — a redundant double lookup. Returns
(interned, was_new).
Sourcepub fn intern_string(&mut self, s: String) -> InternedStr
pub fn intern_string(&mut self, s: String) -> InternedStr
Intern a string, taking ownership.
Trait Implementations§
Source§impl Debug for StringInterner
impl Debug for StringInterner
Source§impl Default for StringInterner
impl Default for StringInterner
Source§fn default() -> StringInterner
fn default() -> StringInterner
Auto Trait Implementations§
impl Freeze for StringInterner
impl RefUnwindSafe for StringInterner
impl Send for StringInterner
impl Sync for StringInterner
impl Unpin for StringInterner
impl UnsafeUnpin for StringInterner
impl UnwindSafe for StringInterner
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.