72得票1回答
如何测试使用Tokio的异步函数?

我有一个需要测试的异步函数。这个函数使用一个mongodb::Database对象来运行,所以我在setup()函数中初始化连接,并使用tokio_test::block_on()将await表达式包装起来。 #[cfg(test)] mod tests { use mongodb:...

60得票2回答
如何使用reqwest执行并行异步HTTP GET请求?

异步示例很有用,但对于 Rust 和 Tokio 新手来说,我很难弄清楚如何同时进行 N 个请求,使用一个 URL 向量,并创建每个 URL 的响应 HTML 字符串的迭代器。如何实现呢?

38得票5回答
为什么我在代码中加了#[tokio::main],但仍然出现错误提示"there is no reactor running, must be called from the context of Tokio runtime"?

我正在遵循mdns Rust文档,并复制了示例代码,但它抛出了以下错误:thread 'main' panicked at 'there is no reactor running, must be called from the context of Tokio runtime' 这是我拥有...

36得票2回答
找不到tokio::main宏?

我正在我的Windows系统上创建一个Rust示例项目,以异步模式通过HTTP GET请求下载文件。 我的代码如下(与Rust Cookbook中提到的the code相同): extern crate error_chain; extern crate tempfile; extern ...

34得票1回答
"tokio::spawn(my_future).await和仅使用my_future.await的区别是什么?"

假设有一个异步函数及其对应的 Future:async fn foo() -> Result<i32, &'static str> { // ... } let my_future = foo(); 使用只有 .await 和使用 tokio::spawn(...

25得票3回答
什么情况下应该使用 tokio::join!() 而不是 tokio::spawn()?

假设我想使用Tokio同时下载两个网页... 我可以使用tokio::spawn()实现:async fn v1() { let t1 = tokio::spawn(reqwest::get("https://example.com")); let t2 =...

24得票1回答
在Tokio运行时的上下文中,我如何在非异步方法内等待从异步方法调用的future?

我正在使用Tokio 1.1进行异步操作。我有一个带有#[tokio::main]的asyncmain,因此我已经在运行时操作。 main调用一个非异步方法,我想在其中使用await等待一个future(具体来说,我正在从datafusion数据框中收集)。这个非异步方法有一个由trait规定...

24得票1回答
在无限循环中异步重新连接客户端到服务器

我无法创建一个客户端来尝试连接服务器,并且: 如果服务器宕机,则必须在无限循环中再次尝试。 如果服务器上线并且连接成功,当连接断开时(即服务器断开客户端的连接),客户端必须重新启动无限循环以尝试连接到服务器。 这是连接到服务器的代码;当前在连接丢失时程序会退出。我不确定实现它的最佳方式...

23得票4回答
如何在trait中定义异步方法?

我有一个特点,我正在使用它来抽象化tokio::net::TcpStream和tokio::net::UnixStream: /// Interface for TcpStream and UnixStream. trait TryRead { // overlapping the na...

23得票3回答
如何使用tokio::join同时运行多个任务?

假设有一个存储在 Vec 中的未来(future),其长度由运行时决定,你需要并发地加入这些未来,那么该怎么做呢? 显然,根据tokio::join文档中的示例,手动指定Vec的每个可能的长度,如1、2、3等,并处理好相应情况即可。extern crate tokio; let v = Ve...