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: Eq + Hash + Send + 'static> ArcIntern<T>
[src]
fn new(val: T) -> ArcIntern<T>
[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
.
fn num_objects_interned(&self) -> usize
[src]
See how many objects have been interned. This may be helpful in analyzing memory use.
fn refcount(&self) -> usize
[src]
Return the number of counts for this pointer.
Trait Implementations
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]
fn clone(&self) -> Self
[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl<T: Eq + Hash + Send> Drop for ArcIntern<T>
[src]
impl<T: Eq + Hash + Send> AsRef<T> for ArcIntern<T>
[src]
impl<T: Eq + Hash + Send> Borrow<T> for ArcIntern<T>
[src]
impl<T: Eq + Hash + Send> Deref for ArcIntern<T>
[src]
type Target = T
The resulting type after dereferencing.
fn deref(&self) -> &T
[src]
Dereferences the value.
impl<T: Eq + Hash + Send + Debug> Debug for ArcIntern<T>
[src]
fn fmt(&self, f: &mut Formatter) -> Result<(), Error>
[src]
Formats the value using the given formatter.
impl<T: Eq + Hash + Send + Display> Display for ArcIntern<T>
[src]
fn fmt(&self, f: &mut Formatter) -> Result<(), Error>
[src]
Formats the value using the given formatter. Read more
impl<T: Eq + Hash + Send> Pointer for ArcIntern<T>
[src]
fn fmt(&self, f: &mut Formatter) -> Result<(), Error>
[src]
Formats the value using the given formatter.
impl<T: Eq + Hash + Send + Default + 'static> Default for ArcIntern<T>
[src]
impl<T: Eq + Hash + Send> Hash for ArcIntern<T>
[src]
The hash implementation 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 hash of the pointer with hash of the data itself.
fn hash<H: Hasher>(&self, state: &mut H)
[src]
Feeds this value into the given [Hasher
]. Read more
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
Feeds a slice of this type into the given [Hasher
]. Read more
impl<T: Eq + Hash + Send> PartialEq for ArcIntern<T>
[src]
fn eq(&self, other: &ArcIntern<T>) -> bool
[src]
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
This method tests for !=
.