[−][src]Struct flume::select::Selector
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> 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]
self,
sender: &'a Sender<U>,
msg: U,
f: impl FnMut(Result<(), SendError<U>>) -> T + 'a
) -> Self
Add a send operation to the selector that sends the provided value.
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]
self,
receiver: &'a Receiver<U>,
f: impl FnMut(Result<U, RecvError>) -> T + 'a
) -> Self
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(&mut self) -> SelectorIter<'a, '_, T>
[src]
Create an iterator over incoming events on this Selector
.
pub fn try_iter(&mut self) -> SelectorTryIter<'a, '_, 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
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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,