pub use futures_signals::map_ref;
#[macro_export]
macro_rules! combine_state_flow {
($($signal:expr),+ $(,)?) => {
combine_state_flow!(@process [] [] $($signal),+)
};
(@process [$($bindings:tt)*] [$($vars:ident)*] $signal:expr) => {
combine_state_flow!(@generate
[$($bindings)* let signal_final = $signal,]
[$($vars)* signal_final]
)
};
(@process [$($bindings:tt)*] [$($vars:ident)*] $signal:expr, $($rest:expr),+) => {
combine_state_flow!(@process
[$($bindings)* let signal_next = $signal,]
[$($vars)* signal_next]
$($rest),+
)
};
(@generate [$($bindings:tt)*] [$var:ident]) => {
map_ref! {
$($bindings)*
=>
$var.clone()
}
};
(@generate [$($bindings:tt)*] [$($vars:ident)+]) => {
map_ref! {
$($bindings)*
=>
($($vars.clone(),)+)
}
};
}