Struct serde_with::base64::Base64
source · [−]pub struct Base64<CHARSET: CharacterSet = Standard, PADDING: Format = Padded>(_);
base64
only.Expand description
Serialize bytes with base64
The type serializes a sequence of bytes as a base64 string.
It works on any type implementing AsRef<[u8]>
for serialization and TryFrom<Vec<u8>>
for deserialization.
The type allows customizing the character set and the padding behavior.
The CHARSET
is a type implementing CharacterSet
.
PADDING
specifies if serializing should emit padding.
Deserialization always supports padded and unpadded formats.
formats::Padded
emits padding and formats::Unpadded
leaves it off.
use serde_with::base64::{Base64, Bcrypt, BinHex, Standard};
use serde_with::formats::{Padded, Unpadded};
#[serde_as]
#[derive(Serialize, Deserialize)]
struct B64 {
// The default is the same as Standard character set with padding
#[serde_as(as = "Base64")]
default: Vec<u8>,
// Only change the character set, implies padding
#[serde_as(as = "Base64<BinHex>")]
charset_binhex: Vec<u8>,
#[serde_as(as = "Base64<Standard, Padded>")]
explicit_padding: Vec<u8>,
#[serde_as(as = "Base64<Bcrypt, Unpadded>")]
no_padding: Vec<u8>,
}
let b64 = B64 {
default: b"Hello World".to_vec(),
charset_binhex: b"Hello World".to_vec(),
explicit_padding: b"Hello World".to_vec(),
no_padding: b"Hello World".to_vec(),
};
let json = serde_json::json!({
"default": "SGVsbG8gV29ybGQ=",
"charset_binhex": "5'8VD'mI8epaD'3=",
"explicit_padding": "SGVsbG8gV29ybGQ=",
"no_padding": "QETqZE6eT07wZEO",
});
// Test serialization and deserialization
assert_eq!(json, serde_json::to_value(&b64).unwrap());
assert_eq!(b64, serde_json::from_value(json).unwrap());
Trait Implementations
sourceimpl<CHARSET: Clone + CharacterSet, PADDING: Clone + Format> Clone for Base64<CHARSET, PADDING>
impl<CHARSET: Clone + CharacterSet, PADDING: Clone + Format> Clone for Base64<CHARSET, PADDING>
sourceimpl<CHARSET: Debug + CharacterSet, PADDING: Debug + Format> Debug for Base64<CHARSET, PADDING>
impl<CHARSET: Debug + CharacterSet, PADDING: Debug + Format> Debug for Base64<CHARSET, PADDING>
sourceimpl<CHARSET: Default + CharacterSet, PADDING: Default + Format> Default for Base64<CHARSET, PADDING>
impl<CHARSET: Default + CharacterSet, PADDING: Default + Format> Default for Base64<CHARSET, PADDING>
sourceimpl<'de, T, CHARSET, FORMAT> DeserializeAs<'de, T> for Base64<CHARSET, FORMAT> where
T: TryFrom<Vec<u8>>,
CHARSET: CharacterSet,
FORMAT: Format,
impl<'de, T, CHARSET, FORMAT> DeserializeAs<'de, T> for Base64<CHARSET, FORMAT> where
T: TryFrom<Vec<u8>>,
CHARSET: CharacterSet,
FORMAT: Format,
sourcefn deserialize_as<D>(deserializer: D) -> Result<T, D::Error> where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<T, D::Error> where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer.
sourceimpl<T, CHARSET> SerializeAs<T> for Base64<CHARSET, Padded> where
T: AsRef<[u8]>,
CHARSET: CharacterSet,
impl<T, CHARSET> SerializeAs<T> for Base64<CHARSET, Padded> where
T: AsRef<[u8]>,
CHARSET: CharacterSet,
sourcefn serialize_as<S>(source: &T, serializer: S) -> Result<S::Ok, S::Error> where
S: Serializer,
fn serialize_as<S>(source: &T, serializer: S) -> Result<S::Ok, S::Error> where
S: Serializer,
Serialize this value into the given Serde serializer.
sourceimpl<T, CHARSET> SerializeAs<T> for Base64<CHARSET, Unpadded> where
T: AsRef<[u8]>,
CHARSET: CharacterSet,
impl<T, CHARSET> SerializeAs<T> for Base64<CHARSET, Unpadded> where
T: AsRef<[u8]>,
CHARSET: CharacterSet,
sourcefn serialize_as<S>(source: &T, serializer: S) -> Result<S::Ok, S::Error> where
S: Serializer,
fn serialize_as<S>(source: &T, serializer: S) -> Result<S::Ok, S::Error> where
S: Serializer,
Serialize this value into the given Serde serializer.
impl<CHARSET: Copy + CharacterSet, PADDING: Copy + Format> Copy for Base64<CHARSET, PADDING>
Auto Trait Implementations
impl<CHARSET, PADDING> RefUnwindSafe for Base64<CHARSET, PADDING> where
CHARSET: RefUnwindSafe,
PADDING: RefUnwindSafe,
impl<CHARSET, PADDING> Send for Base64<CHARSET, PADDING> where
CHARSET: Send,
PADDING: Send,
impl<CHARSET, PADDING> Sync for Base64<CHARSET, PADDING> where
CHARSET: Sync,
PADDING: Sync,
impl<CHARSET, PADDING> Unpin for Base64<CHARSET, PADDING> where
CHARSET: Unpin,
PADDING: Unpin,
impl<CHARSET, PADDING> UnwindSafe for Base64<CHARSET, PADDING> where
CHARSET: UnwindSafe,
PADDING: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more