Struct internment::LocalIntern[][src]

pub struct LocalIntern<T> { /* fields omitted */ }
Expand description

A pointer to a thread-local interned object.

The interned object will be held in memory as long as the thread is still running. Thus you can arrange a crude sort of arena allocation by running code using LocalIntern on a temporary thread. Lifetime issues are as simple as when using Intern. LocalIntern differs in that it is neigher Send nor Share, so it cannot be used in a multithreaded manner. On the benefit side, it is faster than Intern, and the memory can be freed (by running in a temporary thread).

Example

use internment::LocalIntern;

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

Example with owned String data

use internment::LocalIntern;

let x = LocalIntern::new("hello".to_string());
let y = LocalIntern::<String>::from("world");
assert_ne!(x, y);
assert_eq!(x, LocalIntern::from("hello"));
assert_eq!(&*x, "hello"); // dereference a LocalIntern like a pointer

Implementations

Intern a value in a thread-local way. 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 LocalIntern::new is a bit slow.

Intern a value from a reference in a thread-local way (fastest).

If this value has not previously been interned, then new will allocate a spot for the value on the heap and generate that value using T::from(val).

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

Trait Implementations

Performs the conversion.

Immutably borrows from an owned value. Read more

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

The resulting type after dereferencing.

Dereferences the value.

Formats the value using the given formatter. Read more

Performs the conversion.

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.

Feeds this value into the given Hasher. Read more

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

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

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

This method tests for !=.

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

Formats the value using the given formatter.

An LocalIntern is Copy, which is unusal for a pointer. This is safe because we never free the data pointed to by an LocalIntern until the thread itself is destroyed.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

Converts the given value to a String. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.