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
51
#![warn(future_incompatible, rust_2018_compatibility, rust_2018_idioms, unused)]
#![warn(clippy::cargo, clippy::pedantic)]
#![cfg_attr(feature = "strict", deny(warnings))]
#[macro_export]
#[cfg(feature = "proc_macro")]
macro_rules! stack_let_gen {
($name:ident, $body:expr $(,)?) => {
::genawaiter::stack::let_gen_using!(
$name,
::genawaiter::stack_producer!($body),
);
};
}
#[macro_export]
macro_rules! stack_let_gen_using {
($name:ident, $producer:expr $(,)?) => {
let mut shelf = ::genawaiter::stack::Shelf::new();
let mut generator =
unsafe { ::genawaiter::stack::Gen::new(&mut shelf, $producer) };
let $name = &mut generator;
};
}
#[macro_export]
#[cfg(feature = "proc_macro")]
macro_rules! rc_gen {
($body:expr) => {
::genawaiter::rc::Gen::new(::genawaiter::rc_producer!($body))
};
}
#[macro_export]
#[cfg(feature = "proc_macro")]
macro_rules! sync_gen {
($body:expr) => {
::genawaiter::sync::Gen::new(::genawaiter::sync_producer!($body))
};
}