#![doc(html_root_url = "https://docs.rs/async-stream/0.2.1")]
#![warn(
missing_debug_implementations,
missing_docs,
rust_2018_idioms,
unreachable_pub
)]
#![doc(test(no_crate_inject, attr(deny(rust_2018_idioms))))]
mod async_stream;
mod next;
#[doc(hidden)]
pub mod yielder;
#[doc(hidden)]
pub use crate::async_stream::AsyncStream;
#[doc(hidden)]
pub use async_stream_impl::{AsyncStreamHack, AsyncTryStreamHack};
#[doc(hidden)]
pub mod reexport {
#[doc(hidden)]
pub use crate::next::next;
}
#[macro_export]
macro_rules! stream {
($($body:tt)*) => {{
let (mut __yield_tx, __yield_rx) = $crate::yielder::pair();
$crate::AsyncStream::new(__yield_rx, async move {
#[derive($crate::AsyncStreamHack)]
enum Dummy {
Value = $crate::scrub! { $($body)* }
}
$crate::dispatch!(($($body)*))
})
}}
}
#[macro_export]
macro_rules! try_stream {
($($body:tt)*) => {{
let (mut __yield_tx, __yield_rx) = $crate::yielder::pair();
$crate::AsyncStream::new(__yield_rx, async move {
#[derive($crate::AsyncTryStreamHack)]
enum Dummy {
Value = $crate::scrub! { $($body)* }
}
$crate::dispatch!(($($body)*))
})
}}
}
#[doc(hidden)]
#[macro_export]
macro_rules! scrub {
($($body:tt)*) => {{
0
}};
}
#[doc(hidden)]
#[macro_export]
macro_rules! dispatch {
(() $($bang:tt)*) => {
$crate::count!($($bang)*)
};
((($($first:tt)*) $($rest:tt)*) $($bang:tt)*) => {
$crate::dispatch!(($($first)* $($rest)*) $($bang)*)
};
(([$($first:tt)*] $($rest:tt)*) $($bang:tt)*) => {
$crate::dispatch!(($($first)* $($rest)*) $($bang)*)
};
(({$($first:tt)*} $($rest:tt)*) $($bang:tt)*) => {
$crate::dispatch!(($($first)* $($rest)*) $($bang)*)
};
((! $($rest:tt)*) $($bang:tt)*) => {
$crate::dispatch!(($($rest)*) $($bang)* !)
};
((!= $($rest:tt)*) $($bang:tt)*) => {
$crate::dispatch!(($($rest)*) $($bang)* !)
};
(($first:tt $($rest:tt)*) $($bang:tt)*) => {
$crate::dispatch!(($($rest)*) $($bang)*)
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! count {
() => {
stream_0!()
};
(!) => {
stream_1!()
};
(!!) => {
stream_2!()
};
(!!!) => {
stream_3!()
};
(!!!!) => {
stream_4!()
};
(!!!!!) => {
stream_5!()
};
(!!!!!!) => {
stream_6!()
};
(!!!!!!!) => {
stream_7!()
};
(!!!!!!!!) => {
stream_8!()
};
(!!!!!!!!!) => {
stream_9!()
};
(!!!!!!!!!!) => {
stream_10!()
};
(!!!!!!!!!!!) => {
stream_11!()
};
(!!!!!!!!!!!!) => {
stream_12!()
};
(!!!!!!!!!!!!!) => {
stream_13!()
};
(!!!!!!!!!!!!!!) => {
stream_14!()
};
(!!!!!!!!!!!!!!!) => {
stream_15!()
};
(!!!!!!!!!!!!!!!!) => {
stream_16!()
};
(!!!!!!!!!!!!!!!!!) => {
stream_17!()
};
(!!!!!!!!!!!!!!!!!!) => {
stream_18!()
};
(!!!!!!!!!!!!!!!!!!!) => {
stream_19!()
};
(!!!!!!!!!!!!!!!!!!!!) => {
stream_20!()
};
(!!!!!!!!!!!!!!!!!!!!!) => {
stream_21!()
};
(!!!!!!!!!!!!!!!!!!!!!!) => {
stream_22!()
};
(!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_23!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_24!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_25!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_26!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_27!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_28!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_29!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_30!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_31!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_32!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_33!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_34!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_35!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_36!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_37!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_38!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_39!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_40!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_41!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_42!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_43!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_44!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_45!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_46!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_47!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_48!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_49!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_50!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_51!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_52!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_53!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_54!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_55!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_56!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_57!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_58!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_59!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_60!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_61!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_62!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_63!()
};
(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) => {
stream_64!()
};
}