Struct SendWrapper

Source
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.

Source§

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> Freeze for SendWrapper<T>

§

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 T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where 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 T
where 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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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.