Struct rcu_clean::BoxRcu

source ·
pub struct BoxRcu<T> { /* private fields */ }
Expand description

An owned pointer that allows interior mutability

An BoxRcu is currently the size of two pointers (plus the allocated data). So one pointer of overhead versus a plain old Box. You will probably want to to occasionally call [clean] to free up copies made when you call update. Or you could just leak memory, that’s cool too.

Our benchmark oddly shows BoxRcu reads as being faster than reads using Box. I don’t understand this, or particularly believe it.

let x = rcu_clean::BoxRcu::new(3);
let y: &usize = &(*x);
*x.update() = 7; // Wow, we are mutating something we have borrowed!
assert_eq!(*y, 3); // the old reference is still valid.
assert_eq!(*x, 7); // but the pointer now points to the new value.

Implementations§

Trait Implementations§

Immutably borrows from an owned value. Read more
The resulting type after dereferencing.
Dereferences the value.

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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

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.