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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
//! The settings module contains the `SettingsData` struct and related types,
//! which are used to store and manage the current state of settings data.
use HashMap;
use crateFoxSettings;
/// A struct representing a single data point for a setting.
///
/// This struct wraps a `String` value, representing the current value of a specific setting.
///
/// # Fields
/// - `0` (`String`): The string representation of the setting's value.
/// # Example
/// ```rust
/// use foxess::SettingsDataPoint;
///
/// let setting = SettingsDataPoint("42.5".to_string());
/// println!("Value: {}", setting.0);
/// ```
;
/// A structure that maintains the current state of settings data.
///
/// The `SettingsData` struct is used to store and manage the latest data
/// associated with various settings. The data is stored as a mapping
/// between `FoxSettings` keys and their corresponding `SettingsDataPoint`.
///
/// # Fields
///
/// * `data_points` - A `HashMap` where:
/// - The key is of type `FoxSettings`, representing the setting being tracked.
/// - The value is a `SettingsDataPoint`, representing the latest value associated
/// with the corresponding setting.
///
/// # 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::{SettingsData, FoxSettings, SettingsDataPoint};
///
/// # let mut data_points = HashMap::new();
/// # data_points.insert(FoxSettings::MinSocOnGrid, SettingsDataPoint("10".to_string()));
/// # let instance = unsafe { std::mem::transmute::<HashMap<FoxSettings, SettingsDataPoint>, SettingsData>(data_points) };
///
/// let value = instance.get(FoxSettings::MinSocOnGrid);
/// if let Some(v) = value {
/// println!("Min SoC: {}", v);
/// }
/// ```