pub struct SelectedOperation<'a> { /* private fields */ }
Expand description
Implementations§
Source§impl SelectedOperation<'_>
impl SelectedOperation<'_>
Sourcepub fn index(&self) -> usize
pub fn index(&self) -> usize
Returns the index of the selected operation.
§Examples
use crossbeam_channel::{bounded, Select};
let (s1, r1) = bounded::<()>(0);
let (s2, r2) = bounded::<()>(0);
let (s3, r3) = bounded::<()>(1);
let mut sel = Select::new();
let oper1 = sel.send(&s1);
let oper2 = sel.recv(&r2);
let oper3 = sel.send(&s3);
// Only the last operation is ready.
let oper = sel.select();
assert_eq!(oper.index(), 2);
assert_eq!(oper.index(), oper3);
// Complete the operation.
oper.send(&s3, ()).unwrap();
Sourcepub fn send<T>(self, s: &Sender<T>, msg: T) -> Result<(), SendError<T>>
pub fn send<T>(self, s: &Sender<T>, msg: T) -> Result<(), SendError<T>>
Completes the send operation.
The passed Sender
reference must be the same one that was used in Select::send
when the operation was added.
§Panics
Panics if an incorrect Sender
reference is passed.
§Examples
use crossbeam_channel::{bounded, Select, SendError};
let (s, r) = bounded::<i32>(0);
drop(r);
let mut sel = Select::new();
let oper1 = sel.send(&s);
let oper = sel.select();
assert_eq!(oper.index(), oper1);
assert_eq!(oper.send(&s, 10), Err(SendError(10)));
Sourcepub fn recv<T>(self, r: &Receiver<T>) -> Result<T, RecvError>
pub fn recv<T>(self, r: &Receiver<T>) -> Result<T, RecvError>
Completes the receive operation.
The passed Receiver
reference must be the same one that was used in Select::recv
when the operation was added.
§Panics
Panics if an incorrect Receiver
reference is passed.
§Examples
use crossbeam_channel::{bounded, Select, RecvError};
let (s, r) = bounded::<i32>(0);
drop(s);
let mut sel = Select::new();
let oper1 = sel.recv(&r);
let oper = sel.select();
assert_eq!(oper.index(), oper1);
assert_eq!(oper.recv(&r), Err(RecvError));
Trait Implementations§
Source§impl Debug for SelectedOperation<'_>
impl Debug for SelectedOperation<'_>
Auto Trait Implementations§
impl<'a> Freeze for SelectedOperation<'a>
impl<'a> RefUnwindSafe for SelectedOperation<'a>
impl<'a> !Send for SelectedOperation<'a>
impl<'a> !Sync for SelectedOperation<'a>
impl<'a> Unpin for SelectedOperation<'a>
impl<'a> UnwindSafe for SelectedOperation<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Pointable for T
impl<T> Pointable for T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 88 bytes