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(&mut bytes).map_err(serde::ser::Error::custom)?;
10 s.serialize_bytes(&bytes)
11}
12
13pub fn ark_deserialize<'de, D, A: CanonicalDeserialize>(data: D) -> Result<A, D::Error>
14where
15 D: Deserializer<'de>,
16{
17 let s: Vec<u8> = serde::de::Deserialize::deserialize(data)?;
18 let a = A::deserialize(s.as_slice());
19 a.map_err(serde::de::Error::custom)
20}