fuzzy_logic_rs/
implications.rs

1#[derive(Debug)]
2pub enum Implications {
3    Min,
4    Product,
5    Custom(fn(f64, &Vec<f64>) -> Vec<f64>),
6}
7
8impl Implications {
9    pub fn implication(&self, mu: f64, vec: &Vec<f64>) -> Vec<f64> {
10        match self {
11            Self::Min => min_implication(mu, &vec),
12            Self::Product => product_implication(mu, &vec),
13            Self::Custom(func) => func(mu, &vec),
14        }
15    }
16}
17
18pub fn min_implication(mu: f64, vec: &Vec<f64>) -> Vec<f64> {
19    vec.iter().map(|e| e.min(mu)).collect()
20}
21
22pub fn product_implication(mu: f64, vec: &Vec<f64>) -> Vec<f64> {
23    vec.iter().map(|e| e * mu).collect()
24}