pub trait DeserializeBytes: Size {
    // Required method
    fn tls_deserialize_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), Error>
       where Self: Sized;

    // Provided method
    fn tls_deserialize_exact_bytes(bytes: &[u8]) -> Result<Self, Error>
       where Self: Sized { ... }
}
Expand description

The DeserializeBytes trait defines functions to deserialize a byte slice to a struct or enum. In contrast to [Deserialize], this trait operates directly on byte slices and can return any remaining bytes.

Required Methods§

fn tls_deserialize_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), Error>
where Self: Sized,

This function deserializes the bytes from the provided a &[u8] and returns the populated struct, as well as the remaining slice.

In order to get the amount of bytes read, use Size::tls_serialized_len.

Returns an error if one occurs during deserialization.

Provided Methods§

fn tls_deserialize_exact_bytes(bytes: &[u8]) -> Result<Self, Error>
where Self: Sized,

This function deserializes the provided bytes and returns the populated struct. All bytes must be consumed.

Returns an error if not all bytes are read from the input, or if an error occurs during deserialization.

Implementations on Foreign Types§

§

impl DeserializeBytes for u8

§

fn tls_deserialize_bytes(bytes: &[u8]) -> Result<(u8, &[u8]), Error>

§

impl DeserializeBytes for u16

§

fn tls_deserialize_bytes(bytes: &[u8]) -> Result<(u16, &[u8]), Error>

§

impl DeserializeBytes for u32

§

fn tls_deserialize_bytes(bytes: &[u8]) -> Result<(u32, &[u8]), Error>

§

impl DeserializeBytes for u64

§

fn tls_deserialize_bytes(bytes: &[u8]) -> Result<(u64, &[u8]), Error>

§

impl DeserializeBytes for ()

§

fn tls_deserialize_bytes(bytes: &[u8]) -> Result<((), &[u8]), Error>

§

impl<T> DeserializeBytes for Option<T>

§

fn tls_deserialize_bytes(bytes: &[u8]) -> Result<(Option<T>, &[u8]), Error>

§

impl<T> DeserializeBytes for Vec<T>

§

fn tls_deserialize_bytes(bytes: &[u8]) -> Result<(Vec<T>, &[u8]), Error>

§

impl<T> DeserializeBytes for PhantomData<T>

§

fn tls_deserialize_bytes(bytes: &[u8]) -> Result<(PhantomData<T>, &[u8]), Error>

§

impl<T, U> DeserializeBytes for (T, U)

§

fn tls_deserialize_bytes(bytes: &[u8]) -> Result<((T, U), &[u8]), Error>

§

impl<T, U, V> DeserializeBytes for (T, U, V)

§

impl<const LEN: usize> DeserializeBytes for [u8; LEN]

§

fn tls_deserialize_bytes(bytes: &[u8]) -> Result<([u8; LEN], &[u8]), Error>

Implementors§

source§

impl DeserializeBytes for CredentialType

source§

impl DeserializeBytes for Extension

source§

impl DeserializeBytes for ExtensionType

source§

impl DeserializeBytes for ContentType

source§

impl DeserializeBytes for MlsMessageBodyIn

source§

impl DeserializeBytes for Sender

source§

impl DeserializeBytes for WireFormat

source§

impl DeserializeBytes for ProposalOrRefType

source§

impl DeserializeBytes for ProposalType

source§

impl DeserializeBytes for ProposalIn

source§

impl DeserializeBytes for Psk

source§

impl DeserializeBytes for ResumptionPskUsage

source§

impl DeserializeBytes for ProtocolVersion

§

impl DeserializeBytes for Ciphersuite

§

impl DeserializeBytes for SignatureScheme

source§

impl DeserializeBytes for HashReference

source§

impl DeserializeBytes for SignContent

source§

impl DeserializeBytes for Signature

source§

impl DeserializeBytes for SignaturePublicKey

source§

impl DeserializeBytes for Credential

source§

impl DeserializeBytes for ApplicationIdExtension

source§

impl DeserializeBytes for Extensions

source§

impl DeserializeBytes for ExternalPubExtension

source§

impl DeserializeBytes for ExternalSender

source§

impl DeserializeBytes for LastResortExtension

source§

impl DeserializeBytes for RatchetTreeExtension

source§

impl DeserializeBytes for RequiredCapabilitiesExtension

source§

impl DeserializeBytes for SenderExtensionIndex

source§

impl DeserializeBytes for MlsMessageIn

source§

impl DeserializeBytes for PrivateMessageIn

source§

impl DeserializeBytes for PublicMessageIn

source§

impl DeserializeBytes for GroupContext

source§

impl DeserializeBytes for GroupEpoch

source§

impl DeserializeBytes for GroupId

source§

impl DeserializeBytes for KeyPackageIn

source§

impl DeserializeBytes for InitKey

source§

impl DeserializeBytes for Lifetime

source§

impl DeserializeBytes for VerifiableGroupInfo

source§

impl DeserializeBytes for AppAckProposal

source§

impl DeserializeBytes for CustomProposal

source§

impl DeserializeBytes for ExternalInitProposal

source§

impl DeserializeBytes for GroupContextExtensionProposal

source§

impl DeserializeBytes for PreSharedKeyProposal

source§

impl DeserializeBytes for ReInitProposal

source§

impl DeserializeBytes for RemoveProposal

source§

impl DeserializeBytes for AddProposalIn

source§

impl DeserializeBytes for UpdateProposalIn

source§

impl DeserializeBytes for ConfirmationTag

source§

impl DeserializeBytes for EncryptedGroupSecrets

source§

impl DeserializeBytes for Welcome

source§

impl DeserializeBytes for ExternalPsk

source§

impl DeserializeBytes for PreSharedKeyId

source§

impl DeserializeBytes for ResumptionPsk

source§

impl DeserializeBytes for EncryptionKey

source§

impl DeserializeBytes for ParentNode

source§

impl DeserializeBytes for RatchetTreeIn

source§

impl DeserializeBytes for Capabilities

§

impl DeserializeBytes for HpkeCiphertext

§

impl DeserializeBytes for HpkePrivateKey

source§

impl DeserializeBytes for LeafNodeIndex

§

impl DeserializeBytes for SecretVLBytes

§

impl DeserializeBytes for TlsByteVecU8

§

impl DeserializeBytes for TlsByteVecU16

§

impl DeserializeBytes for TlsByteVecU24

§

impl DeserializeBytes for TlsByteVecU32

§

impl DeserializeBytes for U24

§

impl DeserializeBytes for VLBytes

§

impl DeserializeBytes for VerifiableCiphersuite

§

impl<T> DeserializeBytes for SecretTlsVecU8<T>
where T: Zeroize + DeserializeBytes,

§

impl<T> DeserializeBytes for SecretTlsVecU16<T>
where T: Zeroize + DeserializeBytes,

§

impl<T> DeserializeBytes for SecretTlsVecU24<T>
where T: Zeroize + DeserializeBytes,

§

impl<T> DeserializeBytes for SecretTlsVecU32<T>
where T: Zeroize + DeserializeBytes,

§

impl<T> DeserializeBytes for TlsVecU8<T>

§

impl<T> DeserializeBytes for TlsVecU16<T>

§

impl<T> DeserializeBytes for TlsVecU24<T>

§

impl<T> DeserializeBytes for TlsVecU32<T>