Skip to content

Instantly share code, notes, and snippets.

@rust-play
Created December 6, 2022 06:11
Show Gist options
  • Save rust-play/977d9264a63de7e5455177f0b9100902 to your computer and use it in GitHub Desktop.
Save rust-play/977d9264a63de7e5455177f0b9100902 to your computer and use it in GitHub Desktop.
Code shared from the Rust Playground
use futures::{future, stream};
use futures::{StreamExt as _, FutureExt as _};
use tokio::time::sleep;
use tokio::time::{Instant, Duration};
async fn loopnprint(name: &str) -> Result<(), String> {
let now = Instant::now();
loop {
sleep(Duration::from_millis(101)).await;
let elapsed = Instant::now() - now;
if name == "meow2" && elapsed > Duration::from_millis(1230) {
return Err("OHNO".to_string());
}
println!("name: {name}, delayed: {:?}.", elapsed);
}
}
async fn and_loop() -> Result<(), String> {
let mut s = stream::FuturesUnordered::new();
s.push(loopnprint("meow2"));
s.push(loopnprint("meow0"));
s.push(loopnprint("meow1"));
while let Some(f) = s.next().await {
return f;
}
Ok(())
}
#[tokio::main]
async fn main() {
let ret = and_loop().await;
println!("RET: {:?}", ret);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment