struct ModuleInterner {
allocations: BTreeMap<(usize, usize), (Arc<str>, ModuleId)>,
values: HashMap<Arc<str>, ModuleId>,
}Expand description
Intern module values once per source allocation, retaining witnesses until drop.
Fields§
§allocations: BTreeMap<(usize, usize), (Arc<str>, ModuleId)>The retained Arc prevents a remembered address from being reused.
values: HashMap<Arc<str>, ModuleId>Standard value equality handles equal allocations and hash collisions exactly.
Implementations§
Trait Implementations§
Source§impl Default for ModuleInterner
impl Default for ModuleInterner
Source§fn default() -> ModuleInterner
fn default() -> ModuleInterner
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for ModuleInterner
impl RefUnwindSafe for ModuleInterner
impl Send for ModuleInterner
impl Sync for ModuleInterner
impl Unpin for ModuleInterner
impl UnsafeUnpin for ModuleInterner
impl UnwindSafe for ModuleInterner
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
§impl<'a, T> FromIn<'a, T> for T
impl<'a, T> FromIn<'a, T> for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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