26 lines
638 B
Rust
26 lines
638 B
Rust
use serde::{de, ser};
|
|
|
|
const BASE_64_TAG: &str = "enc/b64";
|
|
|
|
pub struct Base64<T>(pub T);
|
|
|
|
impl<T> ser::Serialize for Base64<T> where T: AsRef<[u8]> {
|
|
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
|
where
|
|
S: ser::Serializer
|
|
{
|
|
let b64_string = base64::encode(self.0.as_ref());
|
|
serializer.serialize_newtype_struct(BASE_64_TAG, &b64_string[..])
|
|
}
|
|
}
|
|
|
|
pub struct Base64Raw<T>(pub T);
|
|
|
|
impl<T> ser::Serialize for Base64Raw<T> where T: AsRef<str> {
|
|
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
|
where
|
|
S: ser::Serializer
|
|
{
|
|
serializer.serialize_newtype_struct(BASE_64_TAG, self.0.as_ref())
|
|
}
|
|
} |