librqbit_bencode/
raw_value.rs1use 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}