1#[derive(Debug, Clone)]
2pub struct DataPoint<Time, Data>
3where
4 Time: Clone,
5 Data: Clone,
6{
7 pub time: Time,
8 pub data: Data,
9}
10
11impl<Time, Data> DataPoint<Time, Data>
12where
13 Time: Clone,
14 Data: Clone,
15{
16 pub fn new(time: Time, data: Data) -> DataPoint<Time, Data> {
17 DataPoint { time, data }
18 }
19}
20
21#[derive(Debug, Clone)]
22pub struct TimeSeries<Time, Data>
23where
24 Time: Clone,
25 Data: Clone,
26{
27 inner: Vec<DataPoint<Time, Data>>,
28}
29
30impl<Time, Data> TimeSeries<Time, Data>
31where
32 Time: Clone,
33 Data: Clone,
34{
35 pub fn new() -> TimeSeries<Time, Data> {
36 TimeSeries { inner: Vec::new() }
37 }
38
39 pub fn len(&self) -> usize {
40 self.inner.len()
41 }
42
43 pub fn add_point(&mut self, data_point: DataPoint<Time, Data>) {
44 self.inner.push(data_point);
45 }
46
47 pub fn to_vec(&self) -> Vec<DataPoint<Time, Data>> {
48 self.inner.clone()
49 }
50}