Stream
Futureと同様に poll_next で次のアイテムがあるか、まだ準備中か返す もっと具体的に言うと、 Poll<Option<Self::Item>> を返す
Poll::Ready(Some(T)) 次の値を返せる
Poll::Ready(None) Streamの終端に達した
Poll::Pending まだ次の値を準備中
関わるcrates
stream! try_stream! マクロを提供
将来的に安定した機能は futures_core に統合されるものらしいです。
ソースは・・?
非同期イテレータがほしいだけなのになぜこんなにcratesが乱立してるんだ……castaneai.icon
非同期ランタイムがstdに入ってないからこんなことになっちゃうのか
アプリケーションとして Stream を扱う場合にはアプリケーション全体で利用する非同期バックエンドに準拠して実装をすれば良いですが、ライブラリとして Stream を扱う場合にはライブラリ利用者がどの非同期バックエンドを使うのか想定することはできません。
ライブラリ内部で特定の非同期バックエンドに依存した処理を他でしていない場合には、使用する crate を適切に選択肢、なるべく依存関係を少なく(つまりバイナリのサイズを小さく)したいでしょう。
その場合、futures_core crate のみで実装し、futuers_util、tokio_stream の具体の拡張を利用しないのも選択肢の一つです。
め、面倒くさすぎる・・・・・castaneai.icon