#[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() };
let encoded = bincode::serialize(&test_struct).unwrap();
assert_eq!(encoded, len.to_le_bytes().into_iter().chain(v.into_iter()).collect::<Vec<_>>());
let decoded: MyStructVec = bincode::deserialize(&encoded).unwrap();
assert_eq!(test_struct, decoded);
let expected_str = r#"{"v":"000102030405060708090a0b0c0d0e0f10111213"}"#;
let json = serde_json::to_string(&test_struct).unwrap();
assert_eq!(expected_str, json);
let from_json: MyStructVec = serde_json::from_str(&json).unwrap();
assert_eq!(test_struct, from_json);
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() };
let encoded = bincode::serialize(&test_struct).unwrap();
assert_eq!(encoded, len.to_le_bytes().into_iter().chain(v.into_iter()).collect::<Vec<_>>());
let decoded: MyStructSmallVec = bincode::deserialize(&encoded).unwrap();
assert_eq!(test_struct, decoded);
let expected_str = r#"{"v":"000102030405060708090a0b0c0d0e0f10111213"}"#;
let json = serde_json::to_string(&test_struct).unwrap();
assert_eq!(expected_str, json);
let from_json: MyStructSmallVec = serde_json::from_str(&json).unwrap();
assert_eq!(test_struct, from_json);