eventbus_core/
serde_bytes.rs1use base64::{engine::general_purpose::STANDARD, Engine as _};
2use bytes::Bytes;
3use serde::de::Error as _;
4use serde::{Deserialize, Deserializer, Serializer};
5
6pub fn serialize<S>(value: &Bytes, serializer: S) -> Result<S::Ok, S::Error>
7where
8 S: Serializer,
9{
10 serializer.serialize_str(&STANDARD.encode(value))
11}
12
13pub fn deserialize<'de, D>(deserializer: D) -> Result<Bytes, D::Error>
14where
15 D: Deserializer<'de>,
16{
17 let value = String::deserialize(deserializer)?;
18 STANDARD
19 .decode(value)
20 .map(Bytes::from)
21 .map_err(D::Error::custom)
22}