首页 > 解决方案 > 如何为外部类型实现 serde 的反序列化和序列化?

问题描述

我正在尝试为外部枚举实现Serialize& ,但我不知道如何。Deserialize它有From<u64>所以我想做的就是让那个对象序列化。

#[derive(Serialize, Deserialize)]
pub struct ImageBinds {
    binds: HashMap<KeybdKey, Vec<u8>>, // KeybdKey doesn't implement serialize
}

// won't compile with this:
// only traits defined in the current crate can be implemented for arbitrary types
// impl doesn't use only types from inside the current crate
// I understand the orphan rule and all that but I have no idea how else I'd implement it
// I've looked at serde remote stuff and I cannot work out how to do it with an enum without
// literally just copying the whole crate into my scope which is stupid
impl Serialize for KeybdKey {
    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
        serializer.serialize_u64(u64::from(*self))
    }
}

KeybdKey来自inputbot板条箱。

标签: rustserde

解决方案


推荐阅读