diff --git a/code/rust/src/core/utils.rs b/code/rust/src/core/utils.rs index 8f90228..5907c6d 100644 --- a/code/rust/src/core/utils.rs +++ b/code/rust/src/core/utils.rs @@ -25,11 +25,22 @@ pub fn construct_regex(pattern: &str) -> Regex { // METHODS values // ---------------------------------------------------------------- -pub fn min(x: T, y: T) -> T - where T: PartialOrd -{ - return if y < x { y } else { x }; +#[macro_export] +macro_rules! value_min{ + ($value:expr $(,)?)=>{ $value }; + ($value:expr $(, $values:expr)+ $(,)?)=>{ + { + let x = $crate::value_min!($( $values )+); + if $value < x { + $value + } else { + x + } + } + }; } +#[allow(unused_imports)] +pub(crate) use value_min; // ---------------------------------------------------------------- // METHODS Vectors diff --git a/code/rust/tests/test_core/test_utils.rs b/code/rust/tests/test_core/test_utils.rs index 97c089b..496ba71 100644 --- a/code/rust/tests/test_core/test_utils.rs +++ b/code/rust/tests/test_core/test_utils.rs @@ -3,6 +3,7 @@ // ---------------------------------------------------------------- use ads2::core::utils; +use ads2::value_min; // ---------------------------------------------------------------- // Test regex @@ -21,11 +22,11 @@ fn test_regex() { #[test] fn test_min() { - assert_eq!(utils::min("beth", "alef"), "alef"); - assert_eq!(utils::min("alef", "beth"), "alef"); - assert_eq!(utils::min("alef", "ale"), "ale"); - assert_eq!(utils::min(320, 24), 24); - assert_eq!(utils::min(0.03, 0.2), 0.03); + assert_eq!(value_min!("beth", "alef"), "alef"); + assert_eq!(value_min!("alef", "beth"), "alef"); + assert_eq!(value_min!("alef", "ale"), "ale"); + assert_eq!(value_min!(320, 24), 24); + assert_eq!(value_min!(0.03, 0.2), 0.03); } // ----------------------------------------------------------------