gpt4 book ai didi

rust - 如何在不消耗数据流的情况下查看数据流

转载 作者:行者123 更新时间:2023-12-03 11:46:29 27 4
gpt4 key购买 nike

我需要根据前7个字节的内容处理流。我认为我可以简单地使用 Peekable 特性。
我已将接收方 channel 转换为可窥视的 channel ,以获取对第一条消息的借阅:

let mut peek: Peekable<UnboundedReceiver<StreamMessage>> = stream.peekable();
if let Some(peeked_data) = Pin::new(&mut peek).peek().await {
// inspect peeked_data
let mut reclaimed_stream = peek.into_inner();
if let Some(owned_data) = reclaimed_stream.next().await {
// process data
}
}
但是,使用上述方法,回收的流永远不会返回任何数据。将 reclaimed_stream上的调用替换为try_next会导致 TryRecvErr告诉我接收方 channel 为空。
这似乎与 Peekable特性的意图背道而驰,因此我假设我在实现中做错了事,但是我找不到很多类似方法的例子。有人可以告诉我上述方法有什么问题吗?为什么?
谢谢 :)

最佳答案

这个问题被交叉发布到rust subreddit上,在那里已经被回答了。
TL; DR-Peekable拥有它偷看的数据。通过丢弃Peekable以获得原始流(into_inner),拥有的数据也将被丢弃。

关于rust - 如何在不消耗数据流的情况下查看数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66461356/

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