serde_byte_array/lib.rs
1#![no_std]
2
3use serde::{Deserializer, Serializer};
4
5mod bytearray;
6mod de;
7mod ser;
8
9pub use bytearray::ByteArray;
10pub use de::Deserialize;
11pub use ser::Serialize;
12
13/// Serde `serialize_with` function to serialize bytes efficiently.
14///
15/// This function can be used with either of the following Serde attributes:
16///
17/// - `#[serde(with = "serde_byte_array")]`
18/// - `#[serde(serialize_with = "serde_byte_array::serialize")]`
19///
20/// ```
21/// use serde::Serialize;
22///
23/// #[derive(Serialize)]
24/// struct Efficient<'a> {
25/// #[serde(with = "serde_byte_array")]
26/// byte_array: [u8; 314],
27
28/// #[serde(with = "serde_byte_array")]
29/// byte_array_ref: &'a [u8; 314],
30/// }
31/// ```
32pub fn serialize<T, S>(bytes: &T, serializer: S) -> Result<S::Ok, S::Error>
33where
34 T: ?Sized + Serialize,
35 S: Serializer,
36{
37 Serialize::serialize(bytes, serializer)
38}
39
40/// Serde `deserialize_with` function to deserialize bytes efficiently.
41///
42/// This function can be used with either of the following Serde attributes:
43///
44/// - `#[serde(with = "serde_byte_array")]`
45/// - `#[serde(deserialize_with = "serde_byte_array::deserialize")]`
46///
47/// ```
48/// use serde::Deserialize;
49///
50/// #[derive(Deserialize)]
51/// struct Packet {
52/// #[serde(with = "serde_byte_array")]
53/// byte_array: [u8; 314],
54/// }
55/// ```
56pub fn deserialize<'de, T, D>(deserializer: D) -> Result<T, D::Error>
57where
58 T: Deserialize<'de>,
59 D: Deserializer<'de>,
60{
61 Deserialize::deserialize(deserializer)
62}