[][src]Struct abi_stable::external_types::crossbeam_channel::RSender

#[repr(C)]
pub struct RSender<T> { /* fields omitted */ }

The sender end of a channel, which can be either bounded or unbounded.

Example

use abi_stable::external_types::crossbeam_channel as mpmc;

let (tx,rx)=mpmc::bounded::<&'static str>(1024);

std::thread::spawn(move||{
    for _ in 0..4{
        tx.send("Are we there yet.").unwrap();
    }
});

assert_eq!(rx.recv().unwrap(),"Are we there yet.");
assert_eq!(rx.recv().unwrap(),"Are we there yet.");
assert_eq!(rx.recv().unwrap(),"Are we there yet.");
assert_eq!(rx.recv().unwrap(),"Are we there yet.");
assert!( rx.recv().is_err() );

Methods

impl<T> RSender<T>[src]

pub fn send(&self, value: T) -> Result<(), SendError<T>>[src]

Blocks until value is either sent,or the the other end is disconnected.

If the channel queue is full,this will block to send value.

If the channel is disconnected,this will return an error with value.

Example

use abi_stable::external_types::crossbeam_channel as mpmc;

let (tx,rx)=mpmc::bounded::<u32>(3);

tx.send(1057).unwrap();

drop(rx);
assert!( tx.send(0).is_err() );

pub fn try_send(&self, value: T) -> Result<(), TrySendError<T>>[src]

Immediately sends value,or returns with an error.

An error will be returned in these 2 conditions:

  • the channel is full.

  • the channel has been disconnected.

If the channel has a capacity of 0,it will only send value if the other end is calling recv.

Example

use abi_stable::external_types::crossbeam_channel as mpmc;

let (tx,rx)=mpmc::bounded::<bool>(1);

tx.try_send(true).unwrap();
assert!( tx.try_send(true).unwrap_err().is_full() );

drop(rx);
assert!( tx.try_send(false).unwrap_err().is_disconnected() );

pub fn send_timeout(
    &self,
    value: T,
    timeout: Duration
) -> Result<(), SendTimeoutError<T>>
[src]

Blocks until a timeout to send value.

An error will be returned in these 2 conditions:

  • the value could not be sent before the timeout.

  • the channel has been disconnected.

If the channel has a capacity of 0,it will only send value if the other end calls recv before the timeout.

Example

use abi_stable::external_types::crossbeam_channel as mpmc;

use std::time::Duration;

let (tx,rx)=mpmc::bounded::<()>(1);

let timeout=Duration::from_millis(1);

tx.send_timeout((),timeout).unwrap();
assert!( tx.send_timeout((),timeout).unwrap_err().is_timeout() );

drop(rx);
assert!( tx.send_timeout((),timeout).unwrap_err().is_disconnected() );

pub fn is_empty(&self) -> bool[src]

Returns true if there are no values in the channel queue.

Example

use abi_stable::external_types::crossbeam_channel as mpmc;

let (tx,rx)=mpmc::bounded::<()>(1);

assert!( tx.is_empty() );

tx.send(()).unwrap();
assert!( !tx.is_empty() );

rx.recv().unwrap();
assert!( tx.is_empty() );

pub fn is_full(&self) -> bool[src]

Returns true if the channel queue is full.

This always returns true for channels constructed with bounded(0).

Example

use abi_stable::external_types::crossbeam_channel as mpmc;

let (tx,rx)=mpmc::bounded::<()>(2);

assert!( !tx.is_full() );

tx.send(()).unwrap();
assert!( !tx.is_full() );

tx.send(()).unwrap();
assert!( tx.is_full() );

rx.recv().unwrap();
assert!( !tx.is_full() );

pub fn len(&self) -> usize[src]

Returns the ammount of values in the channel queue.

Example

use abi_stable::external_types::crossbeam_channel as mpmc;

let (tx,rx)=mpmc::bounded::<()>(2);

assert_eq!(tx.len(),0);

tx.send(()).unwrap();
assert_eq!(tx.len(),1);

tx.send(()).unwrap();
assert_eq!(tx.len(),2);

rx.recv().unwrap();
assert_eq!(tx.len(),1);

pub fn capacity(&self) -> Option<usize>[src]

Returns the ammount of values the channel queue can hold.

This returns None if the channel is unbounded.

Example

use abi_stable::external_types::crossbeam_channel as mpmc;

{
    let (tx,rx)=mpmc::bounded::<()>(2);
    assert_eq!(tx.capacity(),Some(2));
}
{
    let (tx,rx)=mpmc::unbounded::<()>();
    assert_eq!(tx.capacity(),None);
}

Trait Implementations

impl<T> GetStaticEquivalent_ for RSender<T> where
    T: __StableAbi
[src]

type StaticEquivalent = _static_RSender<__GetStaticEquivalent<T>>

impl<T> SharedStableAbi for RSender<T> where
    T: __StableAbi
[src]

type IsNonZeroType = False

Whether this type has a single invalid bit-pattern. Read more

type Kind = __ValueKind

The kind of abi stability of this type,there are 2: Read more

impl<T: Send> Send for RSender<T>[src]

impl<T: Send> Sync for RSender<T>[src]

impl<T> From<Sender<T>> for RSender<T>[src]

impl<T> Clone for RSender<T>[src]

fn clone(&self) -> Self[src]

Clones this channel end,getting another handle into the channel.

Note that this allocates an RBox<_>.

impl<T> Debug for RSender<T>[src]

Auto Trait Implementations

impl<T> Unpin for RSender<T> where
    T: Unpin

impl<T> UnwindSafe for RSender<T> where
    T: RefUnwindSafe + UnwindSafe

impl<T> RefUnwindSafe for RSender<T> where
    T: RefUnwindSafe

Blanket Implementations

impl<This> StableAbi for This where
    This: SharedStableAbi<Kind = ValueKind>, 
[src]

impl<This> TransmuteElement for This where
    This: ?Sized
[src]

impl<'a, T> BorrowOwned<'a> for T where
    T: 'a + Clone
[src]

type ROwned = T

type RBorrowed = &'a T

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> TypeIdentity for T where
    T: ?Sized
[src]

type Type = T

The same type as Self. Read more

impl<T> SelfOps for T where
    T: ?Sized
[src]

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The error type returned when the conversion fails.