1use serde::de::DeserializeOwned;
2pub struct Value(pub ron::Value);
4
5impl Value {
6 pub fn get<T>(self) -> T
8 where
9 T: Default + DeserializeOwned,
10 {
11 if let Ok(value) = self.0.into_rust::<T>() {
12 return value;
13 }
14
15 T::default()
16 }
17}
18
19impl From<ron::Value> for Value {
20 fn from(v: ron::Value) -> Self {
21 Value(v)
22 }
23}
24
25impl From<Value> for String {
26 fn from(v: Value) -> String {
27 v.get::<String>()
28 }
29}
30
31impl From<Value> for f64 {
32 fn from(v: Value) -> f64 {
33 v.get::<f64>()
34 }
35}
36
37impl From<Value> for f32 {
38 fn from(v: Value) -> f32 {
39 v.get::<f32>()
40 }
41}