Deriving DeserializeVersioned
You can generate the implementation of DeserializeVersioned
with the derive macro.
#![allow(unused_variables)] fn main() { // Only Deserialize is required for previous version #[derive(Deserialize)] #[serde(rename(deserialize = "A"))] struct Av1 { a: u8, } #[derive(Deserialize)] #[serde(rename(deserialize = "A"))] struct Av2 { b: u8, } // This type has 3 version: // - 1 = Av1 // - 3 = Av2 // - 4 = current #[derive(Deserialize, PartialEq, DeserializeVersioned, Debug)] #[serde(rename(deserialize = "A"))] #[versions( v(index = 1, type = "Av1"), version(index = 3, type = "Av2", default), v(index = 4, self) )] struct A { c: u8, } }