Files
async_trait
bitflags
byteorder
bytes
buf
fmt
cfg_if
enum_primitive
futures
futures_channel
futures_core
futures_executor
futures_io
futures_macro
futures_sink
futures_task
futures_util
async_await
future
future
try_future
io
allow_std.rsbuf_reader.rsbuf_writer.rschain.rsclose.rscopy.rscopy_buf.rscursor.rsempty.rsfill_buf.rsflush.rsinto_sink.rslines.rsmod.rsread.rsread_exact.rsread_line.rsread_to_end.rsread_to_string.rsread_until.rsread_vectored.rsrepeat.rsseek.rssink.rssplit.rstake.rswindow.rswrite.rswrite_all.rswrite_vectored.rs
lock
sink
stream
futures_unordered
stream
buffer_unordered.rsbuffered.rscatch_unwind.rschain.rschunks.rscollect.rsconcat.rscycle.rsenumerate.rsfilter.rsfilter_map.rsflatten.rsfold.rsfor_each.rsfor_each_concurrent.rsforward.rsfuse.rsinto_future.rsmap.rsmod.rsnext.rspeek.rsready_chunks.rsscan.rsselect_next_some.rsskip.rsskip_while.rssplit.rstake.rstake_until.rstake_while.rsthen.rsunzip.rszip.rs
try_stream
task
instant
libc
unix
lock_api
log
memchr
mio
event
net
sys
nix
net
sys
num_cpus
num_traits
once_cell
parking_lot
parking_lot_core
pin_project_lite
pin_utils
proc_macro2
proc_macro_hack
proc_macro_nested
quote
rs9p
scopeguard
signal_hook_registry
slab
smallvec
syn
attr.rsawait.rsbigint.rsbuffer.rscustom_keyword.rscustom_punctuation.rsdata.rsderive.rsdiscouraged.rserror.rsexport.rsexpr.rsext.rsfile.rsgenerics.rsgroup.rsident.rsitem.rslib.rslifetime.rslit.rslookahead.rsmac.rsmacros.rsop.rsparse.rsparse_macro_input.rsparse_quote.rspat.rspath.rsprint.rspunctuated.rsreserved.rssealed.rsspan.rsspanned.rsstmt.rsthread.rstoken.rsty.rsverbatim.rswhitespace.rs
tokio
fs
future
io
driver
util
async_buf_read_ext.rsasync_read_ext.rsasync_seek_ext.rsasync_write_ext.rsbuf_reader.rsbuf_stream.rsbuf_writer.rschain.rscopy.rscopy_bidirectional.rscopy_buf.rsempty.rsflush.rslines.rsmem.rsmod.rsread.rsread_buf.rsread_exact.rsread_int.rsread_line.rsread_to_end.rsread_to_string.rsread_until.rsrepeat.rsshutdown.rssink.rssplit.rstake.rsvec_with_initialized.rswrite.rswrite_all.rswrite_buf.rswrite_int.rswrite_vectored.rs
loom
std
macros
net
tcp
unix
park
process
runtime
blocking
task
thread_pool
signal
sync
mpsc
rwlock
task
task
time
util
tokio_macros
tokio_stream
stream_ext
wrappers
tokio_util
codec
sync
unicode_xid
>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
use crate::stream_ext::Fuse; use crate::Stream; use core::pin::Pin; use core::task::{Context, Poll}; use pin_project_lite::pin_project; pin_project! { /// Stream returned by the [`chain`](super::StreamExt::chain) method. pub struct Chain<T, U> { #[pin] a: Fuse<T>, #[pin] b: U, } } impl<T, U> Chain<T, U> { pub(super) fn new(a: T, b: U) -> Chain<T, U> where T: Stream, U: Stream, { Chain { a: Fuse::new(a), b } } } impl<T, U> Stream for Chain<T, U> where T: Stream, U: Stream<Item = T::Item>, { type Item = T::Item; fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<T::Item>> { use Poll::Ready; let me = self.project(); if let Some(v) = ready!(me.a.poll_next(cx)) { return Ready(Some(v)); } me.b.poll_next(cx) } fn size_hint(&self) -> (usize, Option<usize>) { super::merge_size_hints(self.a.size_hint(), self.b.size_hint()) } }