use crossbeam_channel::{Receiver, bounded};
use tokio::time::{Duration, delay_for};
#[tokio::main]
async fn main() {
let
(s, r) = bounded(10);
for
i
in
0..100 {
s.send(i).unwrap();
rx = r.clone();
tokio::task::spawn(async move {
handle(i, rx).await;
});
}
delay_for(Duration::from_secs(10)).await;
async fn handle(i: i32, rx: Receiver<i32>) {
_d = defer::defer(|| {
println!(
"{} been defer"
, i);
if
Err(err) = rx.recv() {
"err : {:?}"
, err);
delay_for(Duration::from_secs(1)).await;
"{} been excute"