probe-rs-target 0.32.0

Target description schema for probe-rs.
Documentation
use indexmap::IndexMap;
use serde::{Serialize, Serializer, ser::SerializeMap as _};

use crate::serialize::{hex_u_int, serialize_u_int::SerializeUnsignedInt};

#[derive(Serialize)]
struct Hex<I: Serialize + std::fmt::LowerHex + SerializeUnsignedInt>(
    #[serde(serialize_with = "hex_u_int")] I,
);

pub fn serialize<I, T, S>(map: &IndexMap<I, T>, serializer: S) -> Result<S::Ok, S::Error>
where
    I: Serialize + std::fmt::LowerHex + SerializeUnsignedInt + Copy,
    T: Serialize,
    S: Serializer,
{
    let mut map_ser = serializer.serialize_map(Some(map.len()))?;
    for (k, v) in map {
        map_ser.serialize_entry(&Hex(*k), v)?;
    }
    map_ser.end()
}