How do i apply KeyCodeSerializer to only KeyCode?
#[serde(with = "KeyCodeSerializer")]
key_map: HashMap<Control, KeyCode>,
pub mod KeyCodeSerializer {
use serde::{de::Error, Deserialize, Deserializer, Serialize, Serializer};
use notan::prelude::KeyCode;
pub fn serialize<S>(v: &KeyCode, s: S) -> Result<S::Ok, S::Error> where S: Serializer {
let v: u8 = match v {
KeyCode::A => 1,
KeyCode::B => 2,
};
v.serialize(s)
}
pub fn deserialize<'de, D>(d: D) -> Result<KeyCode, D::Error> where D: Deserializer<'de> {
match u8::deserialize(d)? {
1 => Ok(KeyCode::A),
2 => Ok(KeyCode::B),
o => Err(D::Error::custom(format_args!("Invalid value {}", o))),
}
}
}