Struct send_wrapper::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<T> wrapper around a value of type T. The wrapper takes ownership of the value.

source

pub fn valid(&self) -> bool

Returns true 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<T>.

§Panics

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

Trait Implementations§

source§

impl<T: Clone> Clone for SendWrapper<T>

source§

fn clone(&self) -> Self

Returns a copy of the value.

§Panics

Cloning panics if it is done from a different thread than the one the SendWrapper<T> instance has been created with.

1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug> Debug for SendWrapper<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.

§Panics

Formatting panics if it is done from a different thread than the one the SendWrapper<T> instance has been created with.

source§

impl<T> Deref for SendWrapper<T>

source§

fn deref(&self) -> &T

Returns a reference to the contained value.

§Panics

Dereferencing panics if it is done from a different thread than the one the SendWrapper<T> 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

Dereferencing panics if it is done from a different thread than the one the SendWrapper<T> 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<T> instance has been created with.

Exceptions:

  • 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.
  • If T has a trivial drop (needs_drop::<T>() is false) then this method never panics.
source§

impl<T> Send for SendWrapper<T>

source§

impl<T> Sync for SendWrapper<T>

Auto Trait Implementations§

§

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

§

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

§

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

§

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

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> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where 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 T
where 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.