1#![warn(future_incompatible, rust_2018_compatibility, rust_2018_idioms, unused)]
2#![warn(clippy::cargo, clippy::pedantic)]
3#![cfg_attr(feature = "strict", deny(warnings))]
4
5#[macro_export]
6#[cfg(feature = "proc_macro")]
7macro_rules! stack_let_gen {
8 ($name:ident, $body:expr $(,)?) => {
9 ::genawaiter::stack::let_gen_using!(
10 $name,
11 ::genawaiter::stack_producer!($body),
12 );
13 };
14}
15
16#[macro_export]
17macro_rules! stack_let_gen_using {
18 ($name:ident, $producer:expr $(,)?) => {
19 let mut shelf = ::genawaiter::stack::Shelf::new();
31 let mut generator =
32 unsafe { ::genawaiter::stack::Gen::new(&mut shelf, $producer) };
33 let $name = &mut generator;
34 };
35}
36
37#[macro_export]
38#[cfg(feature = "proc_macro")]
39macro_rules! rc_gen {
40 ($body:expr) => {
41 ::genawaiter::rc::Gen::new(::genawaiter::rc_producer!($body))
42 };
43}
44
45#[macro_export]
46#[cfg(feature = "proc_macro")]
47macro_rules! sync_gen {
48 ($body:expr) => {
49 ::genawaiter::sync::Gen::new(::genawaiter::sync_producer!($body))
50 };
51}