big_o/
params.rs

1/// A structure to hold function parameters
2///
3/// Function examples:
4/// - `f(x) = gain * x + offset`
5/// - `f(x) = gain * x ^ power`
6/// - `f(x) = gain * base ^ x`
7///
8/// # Example
9/// ```
10/// let params = big_o::Params::new().gain(2.0).offset(3.0).build();
11///
12/// assert_eq!(params.gain, Some(2.0));
13/// assert_eq!(params.offset, Some(3.0));
14/// assert_eq!(params.power, None);
15/// ```
16#[derive(Clone, Debug)]
17pub struct Params {
18    pub gain: Option<f64>,
19    pub offset: Option<f64>,
20    pub residuals: Option<f64>,
21    pub power: Option<f64>,
22    pub base: Option<f64>,
23}
24
25/// Params builder
26impl Params {
27    pub fn new() -> Self {
28        Self {
29            gain: None,
30            offset: None,
31            residuals: None,
32            power: None,
33            base: None,
34        }
35    }
36
37    pub fn gain(&mut self, value: f64) -> &mut Self {
38        self.gain = Some(value);
39        self
40    }
41
42    pub fn offset(&mut self, value: f64) -> &mut Self {
43        self.offset = Some(value);
44        self
45    }
46
47    pub fn residuals(&mut self, value: f64) -> &mut Self {
48        self.residuals = Some(value);
49        self
50    }
51
52    pub fn power(&mut self, value: f64) -> &mut Self {
53        self.power = Some(value);
54        self
55    }
56
57    pub fn base(&mut self, value: f64) -> &mut Self {
58        self.base = Some(value);
59        self
60    }
61
62    pub fn build(&mut self) -> Params {
63        Params {
64            gain: self.gain,
65            offset: self.offset,
66            residuals: self.residuals,
67            power: self.power,
68            base: self.base,
69        }
70    }
71}
72
73impl Default for Params {
74    fn default() -> Self {
75        Self::new()
76    }
77}