macro_rules! use_derive_signal { ( $(#[$outer:meta])* $name:ident <$inner_signal_type:tt $(< $( $inner_type_param:tt ),+ >)? $(, $( $type_param:tt $( : $first_bound:tt $(+ $rest_bound:tt)* )? ),+ )? > -> $return_type:tt $($body:tt)+ ) => { $(#[$outer])* pub fn $name(value: V) -> Signal<$return_type> where V: Into)?>> $(, $( $type_param $( : $first_bound $(+ $rest_bound)* )? ),+ )? { let value = value.into(); Signal::derive(move || value.with($($body)+)) } }; } pub(crate) use use_derive_signal;