Asynchronous 如何及时检查流在当前时刻是否为空?

Asynchronous 如何及时检查流在当前时刻是否为空?,asynchronous,rust,Asynchronous,Rust,假设我有一个实现流(我使用异步tungstenite作为上下文)的类型。一切都正常(耶!),除了我的测试(boo!)——我想这也意味着不是一切都正常) 我创建一个流: let(ws_stream_3,u)=connect_async(ws_addr).wait.expect(“连接失败”); let(mut write_3,mut read_3)=ws_stream_3.split(); 稍后在程序中,我想检查这个流是否没有任何消息发送给它。我的第一个想法是: assert!(读3.next(

假设我有一个实现
(我使用
异步tungstenite
作为上下文)的类型。一切都正常(耶!),除了我的测试(boo!)——我想这也意味着不是一切都正常)

我创建一个流:

let(ws_stream_3,u)=connect_async(ws_addr).wait.expect(“连接失败”);
let(mut write_3,mut read_3)=ws_stream_3.split();
稍后在程序中,我想检查这个流是否没有任何消息发送给它。我的第一个想法是:

assert!(读3.next().wait.is_none());
(这是一个非常简短的想法——但不是针对永远像这样运行的程序——这是一个很好的迹象,表明没有收到任何消息,但对单元测试没有多大帮助)

是否有一种方法可以检查流中现在是否有项目(而不是等待下一个项目到达,因为我想确保它不会到达,所以这不起作用)

我可以通过使用
select来解决这个问题
有更好的方法吗?

您可以调用
下一个
元素,它将立即评估并消耗未来,而不是等待结果:

use futures::FutureExt;
断言!(读3.next(),now或never(),is none());

这比我的破解解决方案要整洁得多,因为太多
选择调用。泰姆。