pub struct SendWrapper<T> { /* private fields */ }
Expand description

A wrapper which allows you to move around non-Send-types between threads, as long as you access the contained value only from within the original thread and make sure that it is dropped from within the original thread.

Implementations§

source§

impl<T> SendWrapper<T>

source

pub fn new(data: T) -> SendWrapper<T>

Create a SendWrapper wrapper around a value of type T. The wrapper takes ownership of the value.

source

pub fn valid(&self) -> bool

Returns if the value can be safely accessed from within the current thread.

source

pub fn take(self) -> T

Takes the value out of the SendWrapper.

#Panics Panics if it is called from a different thread than the one the SendWrapper instance has been created with.

Trait Implementations§

source§

impl<T> Deref for SendWrapper<T>

source§

fn deref(&self) -> &T

Returns a reference to the contained value.

Panics

Derefencing panics if it is done from a different thread than the one the SendWrapper instance has been created with.

§

type Target = T

The resulting type after dereferencing.
source§

impl<T> DerefMut for SendWrapper<T>

source§

fn deref_mut(&mut self) -> &mut T

Returns a mutable reference to the contained value.

Panics

Derefencing panics if it is done from a different thread than the one the SendWrapper instance has been created with.

source§

impl<T> Drop for SendWrapper<T>

source§

fn drop(&mut self)

Drops the contained value.

Panics

Dropping panics if it is done from a different thread than the one the SendWrapper instance has been created with. As an exception, there is no extra panic if the thread is already panicking/unwinding. This is because otherwise there would be double panics (usually resulting in an abort) when dereferencing from a wrong thread.

source§

impl<T> Send for SendWrapper<T>

source§

impl<T> Sync for SendWrapper<T>

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for SendWrapper<T>where T: RefUnwindSafe,

§

impl<T> Unpin for SendWrapper<T>

§

impl<T> UnwindSafe for SendWrapper<T>where T: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.