1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/// Composes any number of functions /// /// # Example /// ``` /// # #[macro_use] extern crate nll_rs; /// # fn main() { /// use crate::nll_rs::*; /// /// let composed_fn = compose!(|x| x + 1, |x| x * 2, |x: i32| x.pow(2)); /// /// assert_eq!(composed_fn(1), 16); /// /// println!("{}", composed_fn(1)); /// # } /// ``` #[macro_export] macro_rules! compose { ( $last:expr ) => { $last }; ( $head:expr, $($tail:expr), +) => { |x| compose!($($tail),+)($head(x)) }; }