[][src]Struct arc_swap::gen_lock::PrivateUnsharded

pub struct PrivateUnsharded { /* fields omitted */ }

A single „shard“ that is stored inline, inside the corresponding ArcSwap. Therefore, locks on each instance won't influence any other instances. On the other hand, the ArcSwap itself gets bigger and doesn't have multiple shards, so concurrent peeks (or fallbacks on lease) might contend each other a bit.

// This one shares locks with others.
let shared = ArcSwap::from_pointee(42);
// But this one has an independent lock.
let independent = ArcSwapAny::<Arc<usize>, PrivateUnsharded>::from_pointee(42);

// This'll hold a lock so any writers there wouldn't complete
let l = independent.peek();
// But the lock doesn't influence the shared one, so this goes through just fine
shared.store(Arc::new(43));

assert_eq!(42, *l);

Note that theres a type alias [IndependentArcSwap`](../type.IndependentArcSwap.html) that can be used instead.

Trait Implementations

impl LockStorage for PrivateUnsharded[src]

type Shards = [Shard; 1]

The type for keeping several shards. Read more

impl Default for PrivateUnsharded[src]

Auto Trait Implementations

Blanket Implementations

impl<T> From for T[src]

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

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

type Error = Infallible

The type returned in the event of a conversion error.

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

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

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

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

The type returned in the event of a conversion error.

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