Closed pheki closed 4 years ago
from_str panics when trying to use tuple variant as a unit variant, eg.:
from_str
use serde::Deserialize; #[derive(Deserialize, Debug)] enum MyEnum { MyEmptyTupleVariant(), } #[derive(Deserialize, Debug)] struct MyStruct { enum_field: MyEnum, } fn main() { deserialize_right(); deserialize_wrong(); } fn deserialize_right() { let string = r#"{"enum_field": {"MyEmptyTupleVariant": []}}"#; let value: MyStruct = json5::from_str(string).expect("deserialization error"); println!("deserialize_right: {:?}", value); } fn deserialize_wrong() { let string = r#"{"enum_field": "MyEmptyTupleVariant"}"#; let value: MyStruct = json5::from_str(string).expect("deserialization error"); println!("deserialize_wrong: {:?}", value); }
Will output:
deserialize_right: MyStruct { enum_field: MyEmptyTupleVariant } thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/libcore/option.rs:378:21
The panic happens at src/de.rs:387
For reference, serde_json will output:
serde_json
deserialize_right: MyStruct { enum_field: MyEmptyTupleVariant } thread 'main' panicked at 'deserialization error: Error("invalid type: unit variant, expected tuple variant", line: 1, column: 37)', src/libcore/result.rs:1165:5
from_str
panics when trying to use tuple variant as a unit variant, eg.:Will output:
The panic happens at src/de.rs:387
For reference,
serde_json
will output: