probe_rs_target/serialize/
hex_jep106.rs

1use jep106::JEP106Code;
2use serde::{Serialize, Serializer};
3
4use crate::serialize::hex_u_int;
5
6#[derive(Copy, Clone, PartialEq, Eq, Serialize)]
7struct HexJep106 {
8    #[serde(with = "hex_u_int")]
9    id: u8,
10    #[serde(with = "hex_u_int")]
11    cc: u8,
12}
13
14impl From<JEP106Code> for HexJep106 {
15    fn from(jep: JEP106Code) -> Self {
16        Self {
17            id: jep.id,
18            cc: jep.cc,
19        }
20    }
21}
22
23pub fn serialize_option<S>(
24    variant_value: &Option<JEP106Code>,
25    serializer: S,
26) -> Result<S::Ok, S::Error>
27where
28    S: Serializer,
29{
30    match variant_value {
31        Some(val) => {
32            let val = HexJep106::from(*val);
33            serializer.serialize_some(&val)
34        }
35        None => serializer.serialize_none(),
36    }
37}