librqbit_bencode/
raw_value.rs

1use serde::Serialize;
2
3pub struct RawValue<T>(pub T);
4
5pub(crate) const TAG: &str = "::librqbit_bencode::RawValue";
6
7impl<T> Serialize for RawValue<T>
8where
9    T: AsRef<[u8]>,
10{
11    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
12    where
13        S: serde::Serializer,
14    {
15        struct Wrapper<'a>(&'a [u8]);
16
17        impl Serialize for Wrapper<'_> {
18            fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
19            where
20                S: serde::Serializer,
21            {
22                serializer.serialize_bytes(self.0)
23            }
24        }
25
26        serializer.serialize_newtype_struct(TAG, &Wrapper(self.0.as_ref()))
27    }
28}