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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
//! The variables module contains the `VariablesData` struct and related types,
//! which are used to store and manage the current state of variable data.
use HashMap;
use crateFoxVariables;
/// A struct representing a single data point for a variable.
///
/// This struct wraps a `f64` value, representing the recorded value of a specific variable.
///
/// # Fields
/// - `0` (`f64`): The numerical value of the variable.
/// # Example
/// ```rust
/// use foxess::VariableDataPoint;
///
/// let data_point = VariableDataPoint(42.5);
/// println!("Value: {}", data_point.0);
/// ```
;
/// A structure that maintains the current state of variable data.
///
/// The `VariablesData` struct is used to store and manage the latest data
/// associated with various variables. The data is stored as a mapping
/// between `FoxVariables` keys and their corresponding `VariableDataPoint`.
///
/// # Fields
///
/// * `data_points` - A `HashMap` where:
/// - The key is of type `FoxVariables`, representing the variable being tracked.
/// - The value is a `VariableDataPoint`, representing the latest value associated
/// with the corresponding variable.
///
/// # Visibility
///
/// The `data_points` field is marked with `pub(crate)`, meaning it is publicly accessible
/// within the same crate but is not exposed publicly outside of it.
/// # Example
/// ```rust,no_run
/// use std::collections::HashMap;
/// use foxess::{VariablesData, FoxVariables, VariableDataPoint};
///
/// # let mut data_points = HashMap::new();
/// # data_points.insert(FoxVariables::PvPower, VariableDataPoint(1200.0));
/// # let instance = unsafe { std::mem::transmute::<HashMap<FoxVariables, VariableDataPoint>, VariablesData>(data_points) };
///
/// let value = instance.get(FoxVariables::PvPower);
/// if let Some(v) = value {
/// println!("Generation Power: {}W", v);
/// }
/// ```
/// Information about a variable, including its key, descriptive name, optional unit, and optional enumeration values.
/// A collection of available variables.