Rust 程序设计语言 简体中文版 1.85.0
开销会成为一个问题。如果这些调用在一开始就是非阻塞的话那就更理想了。最后,如果我们 能够像在阻塞代码中一样,以直接的风格编写非阻塞代码,那就更好了。比如这样: let data = fetch_data_from(url).await; println!("{data}"); 375/562Rust 程序设计语言 简体中文版 这正是 Rust 的 async 抽象所提供的。不过在讲解它们在实践中如何工作之前,让我们稍微绕 结尾回到这个 trait 的定义,并深入了解它的工作原理,但现在这些细节已经足够让我们继续 前进了。 这些内容可能有点抽象,所以让我们来编写第一个异步程序:一个小型网络爬虫。我们会从命 令行传递两个 URL,并发地抓取它们,并返回第一个完成解析的结果。这个示例会引入不少新 语法,不过不用担心 – 我们会逐步解释所有你需要了解的内容。 第一个异步程序 为了保持本章的内容专注于学习 async,而不是 让我们开始编写一个函数,它获取一个网页 URL 作为参数,请求该 URL 并返回标题元素的文 本(见示例 17-1)。 文件名:src/main.rs use trpl::Html; async fn page_title(url: &str) -> Option{ let response = trpl::get(url).await; let response_text 0 码力 | 562 页 | 3.23 MB | 9 天前3
共 1 条
- 1