diem_types/serde_helper/
vec_bytes.rs

1// Copyright (c) The Diem Core Contributors
2// SPDX-License-Identifier: Apache-2.0
3
4// Copyright 2021 Conflux Foundation. All rights reserved.
5// Conflux is free software and distributed under GNU General Public License.
6// See http://www.gnu.org/licenses/
7
8use serde::{
9    de::Deserializer,
10    ser::{SerializeSeq, Serializer},
11    Deserialize,
12};
13
14pub fn serialize<S>(
15    data: &[Vec<u8>], serializer: S,
16) -> Result<S::Ok, S::Error>
17where S: Serializer {
18    let mut seq = serializer.serialize_seq(Some(data.len()))?;
19    for e in data {
20        seq.serialize_element(serde_bytes::Bytes::new(e.as_slice()))?;
21    }
22    seq.end()
23}
24
25pub fn deserialize<'de, D>(deserializer: D) -> Result<Vec<Vec<u8>>, D::Error>
26where D: Deserializer<'de> {
27    Ok(<Vec<serde_bytes::ByteBuf>>::deserialize(deserializer)?
28        .into_iter()
29        .map(serde_bytes::ByteBuf::into_vec)
30        .collect())
31}