extern crate trpl; // required for mdbook test // ANCHOR: all use trpl::{Either, Html}; fn main() { let args: Vec = std::env::args().collect(); trpl::run(async { let title_fut_1 = page_title(&args[1]); let title_fut_2 = page_title(&args[2]); let (url, maybe_title) = match trpl::race(title_fut_1, title_fut_2).await { Either::Left(left) => left, Either::Right(right) => right, }; println!("{url} returned first"); match maybe_title { Some(title) => println!("Its page title is: '{title}'"), None => println!("Its title could not be parsed."), } }) } async fn page_title(url: &str) -> (&str, Option) { let text = trpl::get(url).await.text().await; let title = Html::parse(&text) .select_first("title") .map(|title| title.inner_html()); (url, title) } // ANCHOR_END: all