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
pub struct StratumRequest<State> {
pub(crate) state: State,
pub(crate) values: serde_json::map::Map<String, serde_json::Value>,
}
impl<State> StratumRequest<State> {
pub fn state(&self) -> &State {
&self.state
}
pub fn get(&self, name: &str) -> Option<&serde_json::Value> {
self.values.get(name)
}
pub fn get_json<T: serde::de::DeserializeOwned>(
&self,
name: &str,
) -> Result<T, serde_json::Error> {
let value = self
.values
.get(name)
.ok_or_else(|| serde::de::Error::custom(format!("expected {}", name)))?
.clone();
Ok(serde_json::from_value(value)?)
}
}