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
24use serde::{Deserializer, Serializer};
25
26/// Serde `serialize_with` function emitting standard base64.
27pub fn serialize<T, S>(bytes: &T, serializer: S) -> Result<S::Ok, S::Error>
28where
29 T: ?Sized + crate::Serialize<crate::Base64>,
30 S: Serializer,
31{
32 crate::Serialize::<crate::Base64>::serialize(bytes, serializer)
33}
34
35/// Serde `deserialize_with` function accepting standard base64.
36pub fn deserialize<'de, T, D>(deserializer: D) -> Result<T, D::Error>
37where
38 T: crate::Deserialize<'de, crate::Base64>,
39 D: Deserializer<'de>,
40{
41 crate::Deserialize::<'de, crate::Base64>::deserialize(deserializer)
42}