#[must_use]
pub struct SelectedOperation<'a> { /* fields omitted */ }
A selected operation that needs to be completed.
To complete the operation, call send
or recv
.
Forgetting to complete the operation is an error and might lead to deadlocks. If a
SelectedOperation
is dropped without completion, a panic occurs.
Returns the index of the selected operation.
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);
let oper = sel.select();
assert_eq!(oper.index(), 2);
assert_eq!(oper.index(), oper3);
oper.send(&s3, ()).unwrap();
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 if an incorrect Sender
reference is passed.
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)));
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 if an incorrect Receiver
reference is passed.
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));
Executes the destructor for this type. Read more
Formats the value using the given formatter. Read more
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Immutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Mutably borrows from an owned value. Read more