diff --git a/Cargo.lock b/Cargo.lock index 0f99dd4..e44aae2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,11 +4,22 @@ version = 4 [[package]] name = "bincode" -version = "1.3.3" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +checksum = "3ad1fa75f77bbd06f187540aa1d70ca50b80b27ce85e7f41c0ce7ff42b34ed3b" dependencies = [ + "bincode_derive", "serde", + "unty", +] + +[[package]] +name = "bincode_derive" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1cef5dd4a4457dd11529e743d18ba4fabbd5f20b6895f4c865cb257337dcf9f" +dependencies = [ + "virtue", ] [[package]] @@ -89,6 +100,18 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +[[package]] +name = "unty" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a88342087869553c259588a3ec9ca73ce9b2d538b7051ba5789ff236b6c129" + +[[package]] +name = "virtue" +version = "0.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" + [[package]] name = "zeroize" version = "1.8.1" diff --git a/Cargo.toml b/Cargo.toml index f062db5..1840c5b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,7 @@ serde = { version = "1", optional = true, default-features = false } zeroize = { version = "1.8", optional = true, default-features = false } [dev-dependencies] -bincode = "1" +bincode = { version = "2", features = ["serde"] } [features] extra-sizes = [] diff --git a/src/serde.rs b/src/serde.rs index 6e98db1..092c9d2 100644 --- a/src/serde.rs +++ b/src/serde.rs @@ -78,19 +78,27 @@ mod tests { Array, sizes::{U4, U5}, }; + use bincode::{ + config, + error::DecodeError, + serde::{decode_from_slice, encode_to_vec}, + }; #[test] fn deserialize_integer_array() { - let serialized = bincode::serialize(&INTEGER_ARRAY_EXAMPLE).unwrap(); - let deserialized: Array = bincode::deserialize(&serialized).unwrap(); + let serialized = encode_to_vec(INTEGER_ARRAY_EXAMPLE, config::standard()).unwrap(); + let (deserialized, len): (Array, usize) = + decode_from_slice(&serialized, config::standard()).unwrap(); + assert_eq!(deserialized, INTEGER_ARRAY_EXAMPLE); + assert_eq!(len, serialized.len()); } #[test] fn deserialize_too_short() { - let serialized = bincode::serialize(&INTEGER_ARRAY_EXAMPLE).unwrap(); - let deserialized: Result, bincode::Error> = - bincode::deserialize(&serialized); + let serialized = encode_to_vec(INTEGER_ARRAY_EXAMPLE, config::standard()).unwrap(); + let deserialized: Result<(Array, usize), DecodeError> = + decode_from_slice(&serialized, config::standard()); // TODO(tarcieri): check for more specific error type assert!(deserialized.is_err()) @@ -99,8 +107,11 @@ mod tests { #[test] fn serialize_integer_array() { let example: Array = Array(INTEGER_ARRAY_EXAMPLE); - let serialized = bincode::serialize(&example).unwrap(); - let deserialized: Array = bincode::deserialize(&serialized).unwrap(); + let serialized = encode_to_vec(example, config::standard()).unwrap(); + let (deserialized, len): (Array, usize) = + decode_from_slice(&serialized, config::standard()).unwrap(); + assert_eq!(example, deserialized); + assert_eq!(len, serialized.len()); } }