time_series/
lib.rs

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}