candid icon indicating copy to clipboard operation
candid copied to clipboard

As a developer, I want to [Nat] support bincode/serde_json deserialize

Open witter-s opened this issue 3 years ago • 0 comments

Very happy to see that Nat supports Serialize, but it doesn't work properly with bincode\serde_json

use candid::{Deserialize, Nat};
use serde::Serialize;

#[derive(Default, Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
pub struct TestStruct {
    inner: Nat,
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_serde_with_bincode() {
        let test_struct = TestStruct::default();
        let serialized = bincode::serialize(&test_struct).unwrap();
        // panicked at 'called `Result::unwrap()` on an `Err` value: DeserializeAnyNotSupported'
        let deserialized = bincode::deserialize(&serialized).unwrap();
        assert_eq!(test_struct, deserialized);
    }

    #[test]
    fn test_serde_with_json() {
        let test_struct = TestStruct::default();
        let serialized = serde_json::to_string(&test_struct).unwrap();
        // panicked at 'called `Result::unwrap()` on an `Err` value: Error("invalid type: sequence, expected Nat value"
        let deserialized: TestStruct = serde_json::from_str(&serialized).unwrap();
        assert_eq!(test_struct, deserialized);
    }
}

witter-s avatar Sep 15 '22 05:09 witter-s