Module serde_bytes

Module serde_bytes 

Source
Expand description

§Examples

§Implement serde::Serialize/serde::Deserialize for the Vec field of the struct

#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
struct MyStructVec {
    #[serde(with = "kaspa_utils::serde_bytes")]
    v: Vec<u8>,
}
let v = vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19];
let len = v.len();
let test_struct = MyStructVec { v: v.clone() };

// Serialize using bincode
let encoded = bincode::serialize(&test_struct).unwrap();
assert_eq!(encoded, len.to_le_bytes().into_iter().chain(v.into_iter()).collect::<Vec<_>>());
// Deserialize using bincode
let decoded: MyStructVec = bincode::deserialize(&encoded).unwrap();
assert_eq!(test_struct, decoded);

let expected_str = r#"{"v":"000102030405060708090a0b0c0d0e0f10111213"}"#;
// Serialize using serde_json
let json = serde_json::to_string(&test_struct).unwrap();
assert_eq!(expected_str, json);
// Deserialize using serde_json
let from_json: MyStructVec = serde_json::from_str(&json).unwrap();
assert_eq!(test_struct, from_json);

§Implement serde::Serialize/serde::Deserialize for the SmallVec field of the struct

use smallvec::{smallvec, SmallVec};
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
struct MyStructSmallVec {  
    #[serde(with = "kaspa_utils::serde_bytes")]
    v: SmallVec<[u8; 19]>,
}
let v = smallvec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19];
let len = v.len();
let test_struct = MyStructSmallVec { v: v.clone() };

// Serialize using bincode
let encoded = bincode::serialize(&test_struct).unwrap();
assert_eq!(encoded, len.to_le_bytes().into_iter().chain(v.into_iter()).collect::<Vec<_>>());
// Deserialize using bincode
let decoded: MyStructSmallVec = bincode::deserialize(&encoded).unwrap();
assert_eq!(test_struct, decoded);

let expected_str = r#"{"v":"000102030405060708090a0b0c0d0e0f10111213"}"#;
// Serialize using serde_json
let json = serde_json::to_string(&test_struct).unwrap();
assert_eq!(expected_str, json);
// Deserialize using serde_json
let from_json: MyStructSmallVec = serde_json::from_str(&json).unwrap();
assert_eq!(test_struct, from_json);

Structs§

FromHexVisitor

Traits§

Deserialize
Serialize

Functions§

deserialize
serialize