rust-sen/sehn-std/src/enc.rs

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())
}
}