Sup*_*zir 3 asynchronous rust rust-tokio
我正在尝试使用async_std从网络接收 UDP 数据报。
有一个UdpSocket实现async recv_from,这个方法返回一个未来,但我需要一个async_std::stream::Stream提供UDP数据报流的,因为它是一个更好的抽象。
我发现tokio::net::UdpFramed这正是我需要的,但它在当前版本的 tokio 中不可用。
一般来说,问题是如何将Futures 从给定的异步函数转换为Stream?
对于单个项目,请使用FutureExt::into_stream:
use futures::prelude::*; // 0.3.1
fn outer() -> impl Stream<Item = i32> {
inner().into_stream()
}
async fn inner() -> i32 {
42
}
Run Code Online (Sandbox Code Playgroud)
对于由闭包生成的多个期货的流,请使用stream::unfold:
use futures::prelude::*; // 0.3.1
fn outer() -> impl Stream<Item = i32> {
stream::unfold((), |()| async { Some((inner().await, ())) })
}
async fn inner() -> i32 {
42
}
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您可以使用stream::unfold:
use futures::prelude::*; // 0.3.1
fn outer() -> impl Stream<Item = i32> {
inner().into_stream()
}
async fn inner() -> i32 {
42
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1148 次 |
| 最近记录: |