1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
//! Serializer trait and default implementation. pub mod impls; use crate::Error; use alloc::vec::Vec; use serde::{Deserialize, Serialize}; /// Serialization abstract with type to serialize. /// /// Serializer implementations must implement this trait. pub trait TypedSerialized { /// Type to serialize type T; /// Constructor fn new(serialized: Vec<u8>) -> Self where Self: Sized; /// Ref to serialized. fn as_slice(&self) -> &[u8]; /// Into serialized. fn into_vec(self) -> Vec<u8>; /// # Failures /// /// - [SerializationError](serde_encrypt_core::error::ErrorKind::SerializationError) when failed to serialize message. fn serialize(v: &Self::T) -> Result<Self, Error> where Self: Sized, Self::T: Serialize; /// # Failures /// /// - [DeserializationError](serde_encrypt_core::error::ErrorKind::DeserializationError) when failed to deserialize decrypted message. fn deserialize<'de>(&'de self) -> Result<Self::T, Error> where Self::T: Deserialize<'de>; }