Rust 程序设计语言 简体中文版 1.85.0构建我们自己的异步抽象 我们也可以将 futures 组合起来形成一个新模式。例如,我们可以使用已有的异步代码块构建 一个 timeout 函数。当我们完成时,其结果将是另一个可以用来构建进一步异步抽象的代码 块。 示例 17-27 展示了我们预期 timeout 如何处理一个缓慢运行的 future。 文件名:src/main.rs let slow = async { trpl::sleep(Duration::from_millis(100)).await; "I finished!" }; match timeout(slow, Duration::from_millis(10)).await { Ok(message) => println!("Succeeded with '{message}'") println!("Failed after {} seconds", duration.as_secs()) } } 让我们来实现它!首先,让我们考虑一下 timeout 的 API: • 它需要是一个 async 函数以便可以 await。 • 它的第一个参数应该是需要运行的 future。我们可以使用泛型以便可以处理任意 future。 • 它的第二个参数将是需要等待的最大时间。如果我们使用0 码力 | 562 页 | 3.23 MB | 27 天前3
共 1 条
- 1













