3Hren / 3Hren/msgpack-rust

Error when deserializing untagged variant of enum

Open
#354 2 comments 2 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
1.4k
Forks
162
PR merge metrics
No merged PRs in 30d

Description

#148 and #149 address when an entire enum is `#[serde(untagged)]`, but if just a single variant is untagged an error occurs.

The following code works fine for deserializing `B` but panics when deserializing `A`.

```Rust
use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize)]
enum A {
#[serde(untagged)]
A {
a: u8
}
}

#[derive(Serialize, Deserialize)]
#[serde(untagged)]
enum B {
C(C)
}

#[derive(Serialize, Deserialize)]
enum C {
C
}

fn main() {
let data = rmp_serde::to_vec(&B::C(C::C)).unwrap();
rmp_serde::from_slice::(&data).unwrap();
let data = rmp_serde::to_vec(&A::A{a: 2}).unwrap();
rmp_serde::from_slice::(&data).unwrap();
}
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.