From 364fde8e6c371731621a02ad984a144451428554 Mon Sep 17 00:00:00 2001 From: Ben Ray Date: Sun, 3 May 2026 17:02:04 -0400 Subject: Basic web scraper --- hello-async/src/main.rs | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'hello-async/src') diff --git a/hello-async/src/main.rs b/hello-async/src/main.rs index e7a11a9..772bc7b 100644 --- a/hello-async/src/main.rs +++ b/hello-async/src/main.rs @@ -1,3 +1,31 @@ +use trpl::{Either, Html}; + fn main() { - println!("Hello, world!"); + let args: Vec = std::env::args().collect(); + + trpl::block_on(async { + let title_fut_1 = page_title(&args[1]); + let title_fut_2 = page_title(&args[2]); + + let (url, maybe_title) = + match trpl::select(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 was: '{title}'"), + None => println!("It had no title"), + } + }) } + +async fn page_title(url: &str) -> (&str, Option) { + let response_text = trpl::get(url).await.text().await; + let title = Html::parse(&response_text) + .select_first("title") + .map(|title| title.inner_html()); + (url, title) +} + -- cgit