I just released internment 0.5.2. An interned object is a smart pointer type that ensures that identical objects have identical pointer values, so rather than hashing an object you can hash its pointer, and comparisons for equality reduce to comparison of pointer values.
The most recent feature is that internment now uses std::ptr::NonNull
to introduce a niche, so Option<LocalIntern<T>>
will occupy the same space as LocalIntern<T>
, which is the size of a single pointer (and similarly for ArcIntern
). Intern<T>
already had this feature because it does not use raw pointers internally (or any unsafe code!) since earlier this year.
Also earlier this year, I have culled a few dependencies, and hid ArcIntern
under a feature ("arc"), so you don't have to pay for its dependencies if you don't use threads.