2个版本
0.1.1 | 2023年5月17日 |
---|---|
0.1.0 | 2023年2月8日 |
#1577 in 编码
4,366每月下载量
在11个crate中使用(通过zebra-chain)
10KB
117 代码行
bitflags-serde-legacy
用于bitflags!
的序列化格式在1.x和2.x之间发生了变化。如果您之前使用过#[derive(Serialize, Deserialize)]
,那么您可以使用这个库在升级时保持兼容性。
使用方法
您可以将此作为常规依赖项使用,或者将源代码拉入项目中的私有模块。
将bitflags-serde-legacy
添加到您的Cargo.toml
[dependencies.bitflags_serde_legacy]
version = "0.1.1"
然后,将现有#[derive(Serialize, Deserialize)]
在您的bitflags!
生成的类型上替换为以下手动实现
use bitflags::bitflags;
bitflags! {
// #[derive(Serialize, Deserialize)]
struct Flags: u32 {
const A = 0b00000001;
const B = 0b00000010;
const C = 0b00000100;
const ABC = Self::A.bits() | Self::B.bits() | Self::C.bits();
}
}
impl serde::Serialize for Flags {
fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
bitflags_serde_legacy::serialize(self, "Flags", serializer)
}
}
impl<'de> serde::Deserialize<'de> for Flags {
fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
bitflags_serde_legacy::deserialize("Flags", deserializer)
}
}
依赖
~190–460KB
~10K SLoC