1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use crate::{Echo, View};
#[derive(Clone)]
pub struct Multiplier {
view: Box<dyn View>,
multiplier: f64,
out: f64,
}
impl Multiplier {
pub fn new(view: Box<dyn View>, multiplier: f64) -> Box<Self> {
Box::new(Self {
view,
multiplier,
out: 0.0,
})
}
pub fn new_final(multiplier: f64) -> Box<Self> {
Self::new(Echo::new(), multiplier)
}
}
impl View for Multiplier {
fn update(&mut self, val: f64) {
self.view.update(val);
let val = self.view.last();
self.out = val * self.multiplier;
}
fn last(&self) -> f64 {
self.out
}
}