const_str/__ctfe/
chain.rs1#[macro_export]
21macro_rules! chain {
22 ($init:expr, $( $call:ident!($($arg:tt),+), )+) => {
23 $crate::__chain_impl!(@chain $init, $( $call!($($arg),+) ),+)
24 };
25}
26
27#[doc(hidden)]
28#[macro_export]
29macro_rules! __chain_impl {
30 (@chain $init:expr, $call:ident!($($arg:tt),+)) => {
31 $crate::__chain_impl!(@call $init, $call!($($arg),+))
32 };
33
34 (@chain $init:expr, $call:ident!($($arg:tt),+), $($rest:tt)+) => {
35 $crate::__chain_impl!(@chain $crate::__chain_impl!(@call $init, $call!($($arg),+)), $($rest)+)
36 };
37
38 (@call $e: expr, $call:ident!($($arg:tt),+)) => {
39 $call!(
40 $(
41 $crate::__chain_impl!(@replace $e, $arg)
42 ),+
43 )
44 };
45
46 (@replace $e:expr, _) => {
47 $e
48 };
49
50 (@replace $e:expr, $tt:tt) => {
51 $tt
52 };
53}