Asynchronous 我是否应该在future::stream::Unfold上调用下一个?

Asynchronous 我是否应该在future::stream::Unfold上调用下一个?,asynchronous,rust,future,Asynchronous,Rust,Future,我正在对此函数返回的流调用next多次:: 错误来自于 但我不明白为什么。我是否可以自由地在循环中调用流的下一步?此错误是有原因的,因为它可能意味着您做错了什么:当流返回Poll::ReadyNone时,它意味着流以类似于迭代器的方式完成,正如已注释的那样 但是,如果您仍然确定这是您想要执行的操作,那么您可以通过调用来消除错误,只需永远返回Poll::ReadyNone即可。我是否可以在循环中自由调用流中的下一个当然可以,但在它返回None后,您应该停止。查看该流:Poll::ReadyNone

我正在对此函数返回的流调用next多次::

错误来自于


但我不明白为什么。我是否可以自由地在循环中调用流的下一步?

此错误是有原因的,因为它可能意味着您做错了什么:当流返回Poll::ReadyNone时,它意味着流以类似于迭代器的方式完成,正如已注释的那样


但是,如果您仍然确定这是您想要执行的操作,那么您可以通过调用来消除错误,只需永远返回Poll::ReadyNone即可。

我是否可以在循环中自由调用流中的下一个当然可以,但在它返回None后,您应该停止。查看该流:Poll::ReadyNone表示该流已终止,不应再次调用Poll\u next。在这方面,它与迭代器非常相似,因为你缺少一个迭代程序,所以很难直接回答你的问题。你甚至没有包括下一个打电话的部分。很难说你到底做错了什么,或者应该做什么来修复它。
pub(crate) fn async_read<R: AsyncRead + Unpin + Send>(
    read: R,
    max_size: usize,
) -> impl Stream<Item = Result<Message<Body>, ReadError>> + Send {
    
    //...

    futures::stream::unfold(Some(state), move |mut state| async move {
        //...
    })
}
thread 'main' panicked at 'Unfold must not be polled after it returned `Poll::Ready(None)`', /root/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.13/src/stream/unfold.rs:115:21