use serde::Deserialize;
#[derive(Deserialize)]
struct U128 {
number: u128,
}
#[derive(Deserialize)]
struct U64 {
number: u64,
}
#[derive(Deserialize)]
#[serde(untagged)]
enum Container<T> {
Data(T),
}
fn main() {
let json_str = "{ \"number\": 500 }";
// The following line works
let _: Container<U64> = serde_json::from_str(json_str).unwrap();
// Also works
let _: U128 = serde_json::from_str(json_str).unwrap();
// Panics!
let _: Container<U128> = serde_json::from_str(json_str).unwrap();
}
Why does the deserialization of the struct with u128 field fail when put inside the untagged enum? Is this a bug?