macro_rules! select {
( recv($r:expr) -> $v:ident => $b:block $(,)? ) => { ... };
( recv($r:expr) -> $v:ident => $b:block $(,)? default => $d:block $(,)? ) => { ... };
( recv($r1:expr) -> $v1:ident => $b1:block $(,)?
recv($r2:expr) -> $v2:ident => $b2:block $(,)? ) => { ... };
( recv($r1:expr) -> $v1:ident => $b1:block $(,)?
recv($r2:expr) -> $v2:ident => $b2:block $(,)?
default => $d:block $(,)? ) => { ... };
( recv($r1:expr) -> $v1:ident => $b1:block $(,)?
recv($r2:expr) -> $v2:ident => $b2:block $(,)?
recv($r3:expr) -> $v3:ident => $b3:block $(,)? ) => { ... };
( recv($r1:expr) -> $v1:ident => $b1:block $(,)?
recv($r2:expr) -> $v2:ident => $b2:block $(,)?
recv($r3:expr) -> $v3:ident => $b3:block $(,)?
default => $d:block $(,)? ) => { ... };
( recv($r1:expr) -> $v1:ident => $b1:block $(,)?
recv($r2:expr) -> $v2:ident => $b2:block $(,)?
recv($r3:expr) -> $v3:ident => $b3:block $(,)?
recv($r4:expr) -> $v4:ident => $b4:block $(,)? ) => { ... };
( recv($r1:expr) -> $v1:ident => $b1:block $(,)?
recv($r2:expr) -> $v2:ident => $b2:block $(,)?
recv($r3:expr) -> $v3:ident => $b3:block $(,)?
recv($r4:expr) -> $v4:ident => $b4:block $(,)?
default => $d:block $(,)? ) => { ... };
( send($tx:expr, $sv:expr) => $sb:block $(,)? default => $d:block $(,)? ) => { ... };
( recv($r1:expr) -> $v1:ident => $rb:block $(,)?
send($tx:expr, $sv:expr) => $sb:block $(,)? ) => { ... };
( recv($r1:expr) -> $v1:ident => $rb:block $(,)?
send($tx:expr, $sv:expr) => $sb:block $(,)?
default => $d:block $(,)? ) => { ... };
( recv($r1:expr) -> $v1:ident => $b1:block $(,)?
recv($r2:expr) -> $v2:ident => $b2:block $(,)?
send($tx:expr, $sv:expr) => $sb:block $(,)? ) => { ... };
( recv($r1:expr) -> $v1:ident => $b1:block $(,)?
recv($r2:expr) -> $v2:ident => $b2:block $(,)?
send($tx:expr, $sv:expr) => $sb:block $(,)?
default => $d:block $(,)? ) => { ... };
( recv($r1:expr) -> $v1:ident => $b1:block $(,)?
recv($r2:expr) -> $v2:ident => $b2:block $(,)?
recv($r3:expr) -> $v3:ident => $b3:block $(,)?
send($tx:expr, $sv:expr) => $sb:block $(,)? ) => { ... };
( recv($r1:expr) -> $v1:ident => $rb:block $(,)?
send($tx1:expr, $sv1:expr) => $sb1:block $(,)?
send($tx2:expr, $sv2:expr) => $sb2:block $(,)? ) => { ... };
( recv($r1:expr) -> $v1:ident => $rb:block $(,)?
send($tx1:expr, $sv1:expr) => $sb1:block $(,)?
send($tx2:expr, $sv2:expr) => $sb2:block $(,)?
default => $d:block $(,)? ) => { ... };
}Expand description
Multiplex channel operations.
See [module-level documentation][crate::go_macro] for full syntax and semantics.
ยงExample โ nonblocking recv with default
use go_lib::chan::chan;
go_lib::run(|| {
let (tx, rx) = chan::<i32>(1);
tx.send(42);
go_lib::select! {
recv(rx) -> v => {
println!("received {:?}", v);
}
default => {
println!("nothing ready");
}
}
});