7得票1回答
调用两个异步接收器的select函数,我会错过某个值吗?

如果一个任务发送到a,而另一个任务(同时)发送到b,那么在使用tokio::select!选择器时,是否会通过取消剩余的未来任务而丢失其中一个值?或者保证在下一个循环迭代中收到该值? use tokio::sync::mpsc::Receiver; async fn foo(mut a: ...

8得票2回答
如何在Rust中使用hyper、tokio和futures设置HTTP请求的超时时间?

如何在使用异步Hyper(>=0.11)时为HTTP请求设置超时时间? 以下为没有超时时间的代码示例: extern crate hyper; extern crate tokio_core; extern crate futures; use futures::Future; u...

8得票2回答
如何使用Rust和Tokio构建多个并发服务器?

我希望使用Rust和Tokio构建多个并发服务器,这些服务器会在不同的端口上运行: let mut core = Core::new().unwrap(); let handle = core.handle(); // I want to bind to multiple port her...

9得票2回答
如何在Tokio中安排重复任务?

我正在用Tokio将使用Rust编写的同步套接字代码替换为异步等效代码。Tokio使用 futures 进行异步活动,因此任务被链接在一起并排队到执行线程池中执行。 我想要做的基本伪代码如下: let tokio::net::listener = TcpListener::bind(&am...

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(...

7得票2回答
如何使用问号操作符来处理Tokio futures中的错误?

我有一个客户端处理Future,它会执行一些操作。是否可以使用impl Future<Item = (), Error = io::Error>作为返回类型并进行更好的错误处理呢? pub fn handle_client(client: Client) -> impl F...

7得票1回答
trait `std::marker::Sync`没有为`std::sync::mpsc::Sender<i32>`实现

我正在尝试使用MPSC构建一个多线程应用程序,但遇到了标题中的错误。我不确定这种情况下的正确模式是什么 - 我正在寻找一种模式,可以克隆生产者通道并将其移动到新线程中以供使用。 这个新线程将保持一个打开的websocket,并在收到websocket消息时通过生产者发送消息数据的子集。由于消...

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

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

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

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

16得票2回答
无法在`Arc`中借用数据作为可变数据

我不知道接下来该做什么。看起来我可能误解了一些东西,或者可能还没有学习一些关键的主题。 use std::sync::Arc; use reqwest::{Error, Response}; // 0.11.4 use tokio::sync::mpsc::{self, Receiver,...