Closed
Description
The code below fails if arbitrary_precision
feature is turned on (works fine if it is turned off):
#[macro_use]
extern crate serde_derive;
#[derive(Deserialize)]
struct Data {
value: i32,
}
#[derive(Deserialize)]
#[serde(tag = "type")]
enum Wrapper {
Data(Data),
}
fn main() {
let json = r#"{"type":"Data","value":123}"#;
// Okay
let _data1: Data = serde_json::from_str(json).unwrap();
// Fails!
let _data2: Wrapper = serde_json::from_str(json).unwrap();
}
Error backtrace:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error("invalid type: map, expected i32", line: 0, column: 0)', libcore/result.rs:1009:5
stack backtrace:
0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
1: std::sys_common::backtrace::print
at libstd/sys_common/backtrace.rs:71
at libstd/sys_common/backtrace.rs:59
2: std::panicking::default_hook::{{closure}}
at libstd/panicking.rs:211
3: std::panicking::default_hook
at libstd/panicking.rs:227
Cargo.toml:
[package]
name = "serde-arbitrary-fail"
version = "0.1.0"
authors = ["Ivan Dubrov <dubrov.ivan@gmail.com>"]
[dependencies]
serde = "1.0.80"
serde_derive = "1.0.80"
serde_json = { version = "1.0.33", features = ["arbitrary_precision"]}
Metadata
Metadata
Assignees
Labels
No labels