Skip to main content

eventbus_core/
serde_bytes.rs

1use 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}