Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adjacently tagged enums fail to deserialize #207

Closed
acanthite1855 opened this issue Mar 29, 2020 · 0 comments
Closed

Adjacently tagged enums fail to deserialize #207

acanthite1855 opened this issue Mar 29, 2020 · 0 comments
Labels

Comments

@acanthite1855
Copy link

acanthite1855 commented Mar 29, 2020

I tried to use serde's adjacently tagged serialization of enums with RON. But it does not seem to work. Unless I've something missing. Here is the example:

use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
#[serde(tag = "type", content = "data")]
enum TestEnum {
    Name(String),
    Index(u32),
}

fn main() {
    use ron::{ser::to_string, de::from_str};

    let source = TestEnum::Index(1);

    let ron_string = to_string(&source).unwrap(); // this one is ok
    let deserialized = from_str::<TestEnum>(&ron_string).unwrap(); // fails here
}

However, the same test for json5 works fine. Am I doing something wrong here?

Here is stack trace:

thread 'main' panicked at 'not implemented: IdDeserializer may only be used for identifiers', <::std::macros::panic macros>:5:6
stack backtrace:
   0: backtrace::backtrace::trace_unsynchronized
             at C:\Users\VssAdministrator\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.40\src\backtrace\mod.rs:66
   1: std::sys_common::backtrace::_print_fmt
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\sys_common\backtrace.rs:77
   2: std::sys_common::backtrace::_print::{{impl}}::fmt
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\sys_common\backtrace.rs:59
   3: core::fmt::write
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libcore\fmt\mod.rs:1052
   4: std::io::Write::write_fmt<std::sys::windows::stdio::Stderr>
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\io\mod.rs:1426
   5: std::sys_common::backtrace::_print
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\sys_common\backtrace.rs:62
   6: std::sys_common::backtrace::print
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\sys_common\backtrace.rs:49
   7: std::panicking::default_hook::{{closure}}
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\panicking.rs:204
   8: std::panicking::default_hook
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\panicking.rs:224
   9: std::panicking::rust_panic_with_hook
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\panicking.rs:472
  10: std::panicking::begin_panic_handler
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\panicking.rs:380
  11: std::panicking::begin_panic_fmt
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\panicking.rs:334
  12: ron::de::id::{{impl}}::deserialize_str<serde::private::de::content::TagContentOtherFieldVisitor>
             at <::std::macros::panic macros>:5
  13: serde::private::de::content::{{impl}}::deserialize<mut ron::de::id::IdDeserializer*>
             at C:\Users\acanthite\.cargo\registry\src\github.com-1ecc6299db9ec823\serde-1.0.105\src\private\de.rs:981
  14: ron::de::{{impl}}::next_key_seed<serde::private::de::content::TagContentOtherFieldVisitor>
             at C:\Users\acanthite\.cargo\registry\src\github.com-1ecc6299db9ec823\ron-0.5.1\src\de\mod.rs:546
  15: tg::_IMPL_DESERIALIZE_FOR_TestEnum::{{impl}}::deserialize::{{impl}}::visit_map<ron::de::CommaSeparated>
             at .\src\main.rs:3
  16: ron::de::{{impl}}::deserialize_struct<tg::_IMPL_DESERIALIZE_FOR_TestEnum::{{impl}}::deserialize::__Visitor>
             at C:\Users\acanthite\.cargo\registry\src\github.com-1ecc6299db9ec823\ron-0.5.1\src\de\mod.rs:450
  17: tg::_IMPL_DESERIALIZE_FOR_TestEnum::{{impl}}::deserialize<mut ron::de::Deserializer*>
             at .\src\main.rs:3
  18: ron::de::from_bytes<tg::TestEnum>
             at C:\Users\acanthite\.cargo\registry\src\github.com-1ecc6299db9ec823\ron-0.5.1\src\de\mod.rs:70
  19: ron::de::from_str<tg::TestEnum>
             at C:\Users\acanthite\.cargo\registry\src\github.com-1ecc6299db9ec823\ron-0.5.1\src\de\mod.rs:60
  20: tg::main
             at .\src\main.rs:16
  21: std::rt::lang_start::{{closure}}<()>
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\src\libstd\rt.rs:67
  22: std::rt::lang_start_internal::{{closure}}
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\rt.rs:52
  23: std::panicking::try::do_call<closure-0,i32>
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\panicking.rs:305
  24: panic_unwind::__rust_maybe_catch_panic
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libpanic_unwind\lib.rs:86
  25: std::panicking::try
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\panicking.rs:281
  26: std::panic::catch_unwind
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\panic.rs:394
  27: std::rt::lang_start_internal
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\/src\libstd\rt.rs:51
  28: std::rt::lang_start<()>
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447\src\libstd\rt.rs:67
  29: main
  30: invoke_main
             at d:\agent\_work\4\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
  31: __scrt_common_main_seh
             at d:\agent\_work\4\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
  32: BaseThreadInitThunk
  33: RtlUserThreadStart
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
@kvark kvark added the bug label Apr 2, 2020
torkleyy added a commit that referenced this issue Dec 3, 2021
torkleyy added a commit to torkleyy/ron that referenced this issue Jun 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants