Struct intern_arc::InternedHash[][src]

#[repr(transparent)]pub struct InternedHash<T: ?Sized + Eq + Hash>(_);

An interned value

This type works very similar to an Arc with the difference that it has no concept of weak references. They are not needed because interned values must not be modified, so reference cycles cannot be constructed. One reference is held by the interner that created this value as long as that interner lives.

Keeping interned values around does not keep the interner alive: once the last reference to the interner is dropped, it will release its existing references to interned values by dropping its set implementation. Only the direct allocation size of the set implementation remains allocated (but no longer functional) until the last weak reference to the interner goes away — each interned value keeps one such weak reference to its interner.

Implementations

impl<T: ?Sized + Eq + Hash> InternedHash<T>[src]

pub fn ref_count(&self) -> u32[src]

Obtain current number of references, including this one.

The value will always be at least 1. If the value is 1, this means that the interner which produced this reference has been dropped; in this case you are still free to use this reference in any way you like.

Trait Implementations

impl<T: ?Sized + Eq + Hash> AsRef<T> for InternedHash<T>[src]

impl<T: ?Sized + Eq + Hash> Borrow<T> for InternedHash<T>[src]

impl<T: ?Sized + Eq + Hash> Clone for InternedHash<T>[src]

impl<T: ?Sized + Eq + Hash> Debug for InternedHash<T> where
    T: Debug
[src]

impl<T: ?Sized + Eq + Hash> Deref for InternedHash<T>[src]

type Target = T

The resulting type after dereferencing.

impl<T: ?Sized + Eq + Hash> Display for InternedHash<T> where
    T: Display
[src]

impl<T: ?Sized + Eq + Hash> Eq for InternedHash<T> where
    T: Eq
[src]

impl<T: ?Sized + Eq + Hash> Hash for InternedHash<T> where
    T: Hash
[src]

impl<T: ?Sized + Eq + Hash> Ord for InternedHash<T> where
    T: Ord
[src]

impl<T: ?Sized + Eq + Hash> PartialEq<InternedHash<T>> for InternedHash<T> where
    T: PartialEq
[src]

impl<T: ?Sized + Eq + Hash> PartialOrd<InternedHash<T>> for InternedHash<T> where
    T: PartialOrd
[src]

impl<T: ?Sized + Eq + Hash> Pointer for InternedHash<T>[src]

Auto Trait Implementations

impl<T> !RefUnwindSafe for InternedHash<T>

impl<T: ?Sized> Send for InternedHash<T> where
    T: Send + Sync

impl<T: ?Sized> Sync for InternedHash<T> where
    T: Send + Sync

impl<T: ?Sized> Unpin for InternedHash<T>

impl<T> !UnwindSafe for InternedHash<T>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.