gpt4 book ai didi

rust - rust future -调整作为水槽的功能

转载 作者:行者123 更新时间:2023-12-03 11:43:17 25 4
gpt4 key购买 nike

我有一个类似于tokio connect example的方法,它带有接受接收器的方法:

pub async fn connect(
addr: &SocketAddr,
mut stdin: impl Stream<Item = Result<Request, io::Error>> + Unpin,
mut stdout: impl Sink<Response, Error = io::Error> + Unpin,
) -> Result<(), Box<dyn Error>> {

是否有一种标准/简便的方法来使功能适应接收器以进行打印和/或转换?

例如。就像是:
connect(.., .., sink::from_function(|r| match r {
Ok(response) => println!("received a response: {:?}", response),
Err(e) => println!("error! {:?}", e);
})
.await;

最佳答案

您可以使用与 drain() 方法(映射接收器的输入)链接的 .with() 函数(创建仅丢弃所有项的接收器)来从函数创建接收器:

use futures::prelude::*;
use futures::sink::drain;

let sink = drain().with(|value| async move { // <-- note async block
// do something with the input...

// then return a result
Ok(())
});

您还可以使用 .with()来检查或转换现有的流,只需要确保从闭包返回的成功类型与要转换的流的输入相同即可。

Playground example

关于rust - rust future -调整作为水槽的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61140838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com