#![cfg(feature = "tokio")]
use std::time::Duration;
use await_tree::{init_global_registry, Config, InstrumentAwait, Registry};
use futures::future::pending;
async fn bar() {
pending::<()>().instrument_await("pending").await;
}
async fn foo() {
await_tree::spawn_anonymous("spawn bar", bar());
bar().instrument_await("bar").await;
}
async fn print() {
tokio::time::sleep(Duration::from_secs(1)).await;
for (key, tree) in Registry::current().collect_all() {
println!("[{}]\n{}\n", key, tree);
}
}
#[tokio::main]
async fn main() {
init_global_registry(Config::default());
await_tree::spawn("Actor 42", "foo", foo());
tokio::spawn(
Registry::current()
.register("Print", "print")
.instrument(print()),
)
.await
.unwrap();
}