1use ark_serialize::{CanonicalDeserialize, CanonicalSerialize};
2use serde::{de::Deserializer, Serializer};
3
4pub fn ark_serialize<S, A: CanonicalSerialize>(a: &A, s: S) -> Result<S::Ok, S::Error>
5where
6 S: Serializer,
7{
8 let mut bytes = vec![];
9 a.serialize_uncompressed(&mut bytes)
10 .map_err(serde::ser::Error::custom)?;
11 s.serialize_bytes(&bytes)
12}
13
14pub fn ark_deserialize<'de, D, A: CanonicalDeserialize>(data: D) -> Result<A, D::Error>
15where
16 D: Deserializer<'de>,
17{
18 let s: Vec<u8> = serde::de::Deserialize::deserialize(data)?;
19 let a = A::deserialize_uncompressed(s.as_slice());
20 a.map_err(serde::de::Error::custom)
21}