use std::time;
use context_async::{Error, Timer, With};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let timer = Timer::with_timeout(time::Duration::from_secs(3));
let url = "https://www.example.com";
let response = reqwest::Client::new()
.get(url)
.send()
.with(timer.clone()) .await;
#[allow(unreachable_patterns)]
match response {
Ok(Ok(response)) => println!("successfully request: {:?}", response),
Ok(Err(err)) => println!("request error from reqwest: {:?}", err),
Err(err) => match err {
Error::ContextTimeout => println!("request timeout: {}", err),
Error::ContextCancelled => println!("request cancelled: {}", err),
_ => unimplemented!(),
}
}
Ok(())
}