Crates.io | bitflags-serde-legacy |
lib.rs | bitflags-serde-legacy |
version | 0.1.1 |
source | src |
created_at | 2023-02-08 03:24:50.34575 |
updated_at | 2023-05-17 22:35:17.20409 |
description | Implement serde traits for bitflags 2.x types compatibly with 1.x. |
homepage | https://github.com/KodrAus/bitflags-serde-legacy |
repository | https://github.com/KodrAus/bitflags-serde-legacy |
max_upload_size | |
id | 779306 |
size | 21,137 |
The serialization format used by bitflags!
has changed between 1.x
and
2.x
. If you previously #[derive(Serialize, Deserialize]
, then you can use this library to
maintain compatibility while upgrading.
You can either use this as a regular dependency, or pull the source into a private module in your project.
Add bitflags-serde-legacy
to your Cargo.toml
:
[dependencies.bitflags_serde_legacy]
version = "0.1.1"
Then, replace an existing #[derive(Serialize, Deserialize)]
on your bitflags!
generated types with the following manual implementations:
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)
}
}