How to Use Async Streams Effectively in Rust

Use `async` functions with `await` to pause execution until I/O completes, then chain calls to reduce boilerplate.

How to Use Async Streams Effectively in Rust

Use async functions with await to pause execution until I/O completes, then chain calls to reduce boilerplate.

use scraper::{Html, Selector};
use reqwest;

async fn page_title(url: &str) -> Option<String> {
    let response_text = reqwest::get(url).await.ok()?.text().await.ok()?;
    Html::parse_document(&response_text)
        .select(&Selector::parse("title").ok()?)
        .next()
        .map(|title| title.text().collect::<String>())
}

This pattern allows your program to handle multiple network requests concurrently without blocking the main thread.