我正在使用Tokio,我想接收来自两个不同mpsc
队列的请求。 select!
似乎很可行,但是我不确定futures::select!
和tokio::select!
之间有什么区别。在哪种情况下,您应该使用另一种方法?
tokio::select!
是基于futures::select!
的经验而构建的,但对其进行了一些改进以使其更符合人体工程学。例如。 futures-rs
的select!
版本需要Future
来实现FusedFuture
,而tokios版本不再需要此。
相反,tokios版本在宏中支持前提条件,以涵盖相同的用例。
CR in the tokio repo详细说明了这一点。
此更改也是proposed for the futures-rs version,但到目前为止尚未实现。
如果您的项目中已经包含了tokio,则最好使用tokios版本。但是,如果您还没有并且不想接受其他依赖关系,那么futures-rs版本也将以几乎确定性的方式涵盖大多数用例。通过Future
扩展方法,可能仅需要将某些FusedFuture
转换为FutureExt::fuse()
。