serde_human_bytes/
base64.rs

1//! Base64 encoding support for human-readable serialization.
2//!
3//! This module provides an alternative to the default hex encoding.
4//! Use it with `#[serde(with = "serde_human_bytes::base64")]`.
5//!
6//! # Example
7//!
8//! ```
9//! use serde_derive::{Deserialize, Serialize};
10//!
11//! #[derive(Deserialize, Serialize)]
12//! struct Example {
13//!     #[serde(with = "serde_human_bytes::base64")]
14//!     data: Vec<u8>,
15//!
16//!     #[serde(with = "serde_human_bytes::base64")]
17//!     byte_buf: serde_human_bytes::ByteBuf,
18//!
19//!     #[serde(with = "serde_human_bytes::base64")]
20//!     boxed: Box<[u8]>,
21//! }
22//! ```
23
24mod de;
25mod ser;
26
27pub use de::Deserialize;
28pub use ser::Serialize;
29use serde::{Deserializer, Serializer};
30
31// ============ Public API functions ============
32
33/// Serde `serialize_with` function to serialize bytes as base64.
34///
35/// Use with `#[serde(serialize_with = "serde_human_bytes::base64::serialize")]`
36/// or `#[serde(with = "serde_human_bytes::base64")]`.
37pub fn serialize<T, S>(bytes: &T, serializer: S) -> Result<S::Ok, S::Error>
38where
39    T: ?Sized + Serialize,
40    S: Serializer,
41{
42    Serialize::serialize(bytes, serializer)
43}
44
45/// Serde `deserialize_with` function to deserialize bytes from base64.
46///
47/// Use with `#[serde(deserialize_with = "serde_human_bytes::base64::deserialize")]`
48/// or `#[serde(with = "serde_human_bytes::base64")]`.
49pub fn deserialize<'de, T, D>(deserializer: D) -> Result<T, D::Error>
50where
51    T: Deserialize<'de>,
52    D: Deserializer<'de>,
53{
54    Deserialize::deserialize(deserializer)
55}