diff --git a/ta_lib/core/src/bool.rs b/ta_lib/core/src/bool.rs index 6d21330c..fd9d4c7f 100644 --- a/ta_lib/core/src/bool.rs +++ b/ta_lib/core/src/bool.rs @@ -1,27 +1,34 @@ use crate::series::Series; impl Series { + fn compare(&self, scalar: f64, f: F) -> Series + where + F: Fn(f64, f64) -> bool, + { + self.fmap(|x| x.map(|v| f(*v, scalar))) + } + pub fn eq(&self, scalar: f64) -> Series { - self.fmap(|x| x.map(|v| *v == scalar)) + self.compare(scalar, |a, b| a == b) } pub fn ne(&self, scalar: f64) -> Series { - self.fmap(|x| x.map(|v| *v != scalar)) + self.compare(scalar, |a, b| a != b) } pub fn gt(&self, scalar: f64) -> Series { - self.fmap(|x| x.map(|v| *v > scalar)) + self.compare(scalar, |a, b| a > b) } pub fn gte(&self, scalar: f64) -> Series { - self.fmap(|x| x.map(|v| *v >= scalar)) + self.compare(scalar, |a, b| a >= b) } pub fn lt(&self, scalar: f64) -> Series { - self.fmap(|x| x.map(|v| *v < scalar)) + self.compare(scalar, |a, b| a < b) } pub fn lte(&self, scalar: f64) -> Series { - self.fmap(|x| x.map(|v| *v <= scalar)) + self.compare(scalar, |a, b| a <= b) } }