serde_avro_bytes/avro_bytes/ser/
bytes.rs

1use serde::{Serialize, Serializer};
2
3pub struct Bytes<'a>(pub(crate) &'a [u8]);
4
5impl Serialize for Bytes<'_> {
6    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
7        serializer.serialize_bytes(self.0)
8    }
9}
10
11pub fn serialize_bytes<S: Serializer>(
12    v: impl AsRef<[u8]>,
13    serializer: S,
14) -> Result<S::Ok, S::Error> {
15    serializer.serialize_bytes(v.as_ref())
16}
17
18pub fn serialize_option_bytes<S: Serializer, T: AsRef<[u8]>>(
19    v: &Option<T>,
20    serializer: S,
21) -> Result<S::Ok, S::Error> {
22    match v {
23        None => serializer.serialize_none(),
24        Some(bytes) => serializer.serialize_some(&Bytes(bytes.as_ref())),
25    }
26}