[][src]Struct flume::select::Selector

pub struct Selector<'a, T: 'a> { /* fields omitted */ }

A type used to wait upon multiple blocking operations at once.

A Selector implements select-like behaviour, allowing a thread to wait upon the result of more than one operation at once.

Examples

let (tx0, rx0) = flume::unbounded();
let (tx1, rx1) = flume::unbounded();

std::thread::spawn(move || {
    tx0.send(true).unwrap();
    tx1.send(42).unwrap();
});

flume::Selector::new()
    .recv(&rx0, |b| println!("Received {:?}", b))
    .recv(&rx1, |n| println!("Received {:?}", n))
    .wait();

Methods

impl<'a, T: 'a> Selector<'a, T>[src]

pub fn new() -> Self[src]

Create a new selector.

pub fn send<U>(
    self,
    sender: &'a Sender<U>,
    msg: U,
    f: impl FnMut(Result<(), SendError<U>>) -> T + 'a
) -> Self
[src]

Add a send operation to the selector.

Once added, the selector can be used to run the provided handler function on completion of this operation.

pub fn recv<U>(
    self,
    receiver: &'a Receiver<U>,
    f: impl FnMut(Result<U, RecvError>) -> T + 'a
) -> Self
[src]

Add a receive operation to the selector.

Once added, the selector can be used to run the provided handler function on completion of this operation.

pub fn poll(&mut self) -> Option<T>[src]

Poll each event associated with this Selector to see whether any have completed. If more than one event has completed, a random event handler will be run and its return value returned. If none of the events have completed a None is returned.

pub fn wait(&mut self) -> T[src]

Wait until one of the events associated with this Selector has completed. If more than one event has completed, a random event handler will be run and its return value produced.

pub fn iter<'b: 'a>(&'b mut self) -> SelectorIter<'b, T>[src]

Create an iterator over incoming events on this Selector.

pub fn try_iter<'b: 'a>(&'b mut self) -> SelectorTryIter<'b, T>[src]

Create an iterator over pending events on this Selector. This iterator will only produce values while there are events immediately available to handle.

Trait Implementations

impl<'a, T> Drop for Selector<'a, T>[src]

Auto Trait Implementations

impl<'a, T> !RefUnwindSafe for Selector<'a, T>

impl<'a, T> !Send for Selector<'a, T>

impl<'a, T> !Sync for Selector<'a, T>

impl<'a, T> Unpin for Selector<'a, T>

impl<'a, T> !UnwindSafe for Selector<'a, T>

Blanket Implementations

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

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

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

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

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

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.