diff --git a/src/core/utils/mod.rs b/src/core/utils/mod.rs index 26b0484e..b8640f3a 100644 --- a/src/core/utils/mod.rs +++ b/src/core/utils/mod.rs @@ -53,6 +53,25 @@ macro_rules! extract_variant { }; } +#[macro_export] +macro_rules! apply { + (1, $($idx:tt)+) => { + |t| (($($idx)+)(t.0),) + }; + + (2, $($idx:tt)+) => { + |t| (($($idx)+)(t.0), ($($idx)+)(t.1),) + }; + + (3, $($idx:tt)+) => { + |t| (($($idx)+)(t.0), ($($idx)+)(t.1), ($($idx)+)(t.2),) + }; + + (4, $($idx:tt)+) => { + |t| (($($idx)+)(t.0), ($($idx)+)(t.1), ($($idx)+)(t.2), ($($idx)+4)(t.3)) + }; +} + #[macro_export] macro_rules! at { ($idx:tt) => { @@ -112,6 +131,14 @@ macro_rules! is_not_empty { }; } +/// Functor for equality i.e. (a, b).map(is_equal!()) +#[macro_export] +macro_rules! is_equal { + () => { + |a, b| a == b + }; +} + /// Functor for truthy #[macro_export] macro_rules! is_true {