pub struct Fragile<T> { /* private fields */ }
Expand description
A Fragile<T>
wraps a non sendable T
to be safely send to other threads.
Once the value has been wrapped it can be sent to other threads but access to the value on those threads will fail.
If the value needs destruction and the fragile wrapper is on another thread
the destructor will panic. Alternatively you can use
Sticky
which is not going to panic but might temporarily
leak the value.
Implementations§
source§impl<T> Fragile<T>
impl<T> Fragile<T>
sourcepub fn is_valid(&self) -> bool
pub fn is_valid(&self) -> bool
Returns true
if the access is valid.
This will be false
if the value was sent to another thread.
sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Consumes the Fragile
, returning the wrapped value.
Panics
Panics if called from a different thread than the one where the original value was created.
sourcepub fn try_into_inner(self) -> Result<T, Self>
pub fn try_into_inner(self) -> Result<T, Self>
Consumes the Fragile
, returning the wrapped value if successful.
The wrapped value is returned if this is called from the same thread
as the one where the original value was created, otherwise the
Fragile
is returned as Err(self)
.
sourcepub fn get_mut(&mut self) -> &mut T
pub fn get_mut(&mut self) -> &mut T
Mutably borrows the wrapped value.
Panics
Panics if the calling thread is not the one that wrapped the value.
For a non-panicking variant, use try_get_mut
.
sourcepub fn try_get(&self) -> Result<&T, InvalidThreadAccess>
pub fn try_get(&self) -> Result<&T, InvalidThreadAccess>
Tries to immutably borrow the wrapped value.
Returns None
if the calling thread is not the one that wrapped the value.
sourcepub fn try_get_mut(&mut self) -> Result<&mut T, InvalidThreadAccess>
pub fn try_get_mut(&mut self) -> Result<&mut T, InvalidThreadAccess>
Tries to mutably borrow the wrapped value.
Returns None
if the calling thread is not the one that wrapped the value.
Trait Implementations§
source§impl<T: Ord> Ord for Fragile<T>
impl<T: Ord> Ord for Fragile<T>
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
source§impl<T: PartialEq> PartialEq<Fragile<T>> for Fragile<T>
impl<T: PartialEq> PartialEq<Fragile<T>> for Fragile<T>
source§impl<T: PartialOrd> PartialOrd<Fragile<T>> for Fragile<T>
impl<T: PartialOrd> PartialOrd<Fragile<T>> for Fragile<T>
source§fn le(&self, other: &Fragile<T>) -> bool
fn le(&self, other: &Fragile<T>) -> bool
self
and other
) and is used by the <=
operator. Read more