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

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

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<F: Future> Future for SendWrapper<F>

Available on crate feature futures only.
Source§

fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>

Polls this SendWrapper Future.

§Panics

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

Source§

type Output = <F as Future>::Output

The type of value produced on completion.
Source§

impl<S: Stream> Stream for SendWrapper<S>

Available on crate feature futures only.
Source§

fn poll_next( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Option<Self::Item>>

Polls this SendWrapper Stream.

§Panics

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

Source§

type Item = <S as Stream>::Item

Values yielded by the stream.
Source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the stream. Read more
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§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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<F> IntoFuture for F
where F: Future,

Source§

type Output = <F as Future>::Output

The output that the future will produce on completion.
Source§

type IntoFuture = F

Which kind of future are we turning this into?
Source§

fn into_future(self) -> <F as IntoFuture>::IntoFuture

Creates a future from a value. Read more
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> ToOwned for T
where T: Clone,

Source§

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>,

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<F, T, E> TryFuture for F
where F: Future<Output = Result<T, E>> + ?Sized,

Source§

type Ok = T

The type of successful values yielded by this future
Source§

type Error = E

The type of failures yielded by this future
Source§

fn try_poll( self: Pin<&mut F>, cx: &mut Context<'_>, ) -> Poll<<F as Future>::Output>

Poll this TryFuture as if it were a Future. Read more
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.
Source§

impl<S, T, E> TryStream for S
where S: Stream<Item = Result<T, E>> + ?Sized,

Source§

type Ok = T

The type of successful values yielded by this future
Source§

type Error = E

The type of failures yielded by this future
Source§

fn try_poll_next( self: Pin<&mut S>, cx: &mut Context<'_>, ) -> Poll<Option<Result<<S as TryStream>::Ok, <S as TryStream>::Error>>>

Poll this TryStream as if it were a Stream. Read more