Struct internment::ArcIntern [] [src]

pub struct ArcIntern<T: Eq + Hash + Send + 'static> { /* fields omitted */ }

A pointer to a reference-counted interned object.

The interned object will be held in memory only until its reference count reaches zero.

Example

use internment::ArcIntern;

let x = ArcIntern::new("hello");
let y = ArcIntern::new("world");
assert_ne!(x, y);
assert_eq!(x, ArcIntern::new("hello"));
assert_eq!(*x, "hello"); // dereference an ArcIntern like a pointer

Methods

impl<T: Clone + Eq + Hash + Send + 'static> ArcIntern<T>
[src]

[src]

Intern a value. If this value has not previously been interned, then new will allocate a spot for the value on the heap. Otherwise, it will return a pointer to the object previously allocated.

Note that ArcIntern::new is a bit slow, since it needs to check a HashMap protected by a Mutex.

[src]

See how many objects have been interned. This may be helpful in analyzing memory use.

[src]

Return the number of counts for this pointer.

Trait Implementations

impl<T: Eq + Eq + Hash + Send + 'static> Eq for ArcIntern<T>
[src]

impl<T: PartialEq + Eq + Hash + Send + 'static> PartialEq for ArcIntern<T>
[src]

[src]

This method tests for self and other values to be equal, and is used by ==. Read more

[src]

This method tests for !=.

impl<T: Eq + Hash + Send> Send for ArcIntern<T>
[src]

impl<T: Eq + Hash + Send> Sync for ArcIntern<T>
[src]

impl<T: Eq + Hash + Send + 'static> Clone for ArcIntern<T>
[src]

[src]

Returns a copy of the value. Read more

1.0.0
[src]

Performs copy-assignment from source. Read more

impl<T: Eq + Hash + Send> Drop for ArcIntern<T>
[src]

[src]

Executes the destructor for this type. Read more

impl<T: Eq + Hash + Send> Borrow<T> for ArcIntern<T>
[src]

[src]

Immutably borrows from an owned value. Read more

impl<T: Eq + Hash + Send> AsRef<T> for ArcIntern<T>
[src]

[src]

Performs the conversion.

impl<T: Eq + Hash + Send> Deref for ArcIntern<T>
[src]

The resulting type after dereferencing.

[src]

Dereferences the value.

impl<T: Clone + Eq + Hash + Send + Default> Default for ArcIntern<T>
[src]

[src]

Returns the "default value" for a type. Read more

impl<T: Clone + Eq + Hash + Send + Debug> Debug for ArcIntern<T>
[src]

[src]

Formats the value using the given formatter.

impl<T: Display + Clone + Eq + Hash + Send> Display for ArcIntern<T>
[src]

[src]

Formats the value using the given formatter. Read more

impl<T: Clone + Eq + Hash + Send> Pointer for ArcIntern<T>
[src]

[src]

Formats the value using the given formatter.

impl<T: Eq + Hash + Send> Hash for ArcIntern<T>
[src]

The hash implementation for ArcIntern returns the hash of the pointer value, not the hash of the value pointed to. This should be irrelevant, since there is a unique pointer for every value, but it is observable, since you could compare the pointer of ArcIntern::new(data) with data itself.

[src]

Feeds this value into the given [Hasher]. Read more

1.3.0
[src]

Feeds a slice of this type into the given [Hasher]. Read more