Trait ZvtSerializerImpl

Source
pub trait ZvtSerializerImpl<L = Empty, E = Default, TE = Default>: Sized
where L: Length, E: Encoding<Self>, TE: Encoding<Tag>,
{ // Provided methods fn serialize_tagged(&self, tag: Option<Tag>) -> Vec<u8> { ... } fn deserialize_tagged( bytes: &[u8], tag: Option<Tag>, ) -> Result<(Self, &[u8]), ZVTError> { ... } }
Expand description

The implementation for serializing/deserializing a Zvt struct.

Trait implements the basic logic of the Zvt protocol. Every package consists of up to three fields:

<BMP-NUMBER> <LENGTH> <DATA>.

The BMP-NUMBER and LENGTH are optional; The DATA may be encoded in different ways.

§Parameters:

Provided Methods§

Source

fn serialize_tagged(&self, tag: Option<Tag>) -> Vec<u8>

Source

fn deserialize_tagged( bytes: &[u8], tag: Option<Tag>, ) -> Result<(Self, &[u8]), ZVTError>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<L, E, TE> ZvtSerializerImpl<L, E, TE> for u8
where L: Length, E: Encoding<u8>, TE: Encoding<Tag>,

Source§

impl<L, E, TE> ZvtSerializerImpl<L, E, TE> for u16
where L: Length, E: Encoding<u16>, TE: Encoding<Tag>,

Source§

impl<L, E, TE> ZvtSerializerImpl<L, E, TE> for u32
where L: Length, E: Encoding<u32>, TE: Encoding<Tag>,

Source§

impl<L, E, TE> ZvtSerializerImpl<L, E, TE> for u64
where L: Length, E: Encoding<u64>, TE: Encoding<Tag>,

Source§

impl<L, E, TE> ZvtSerializerImpl<L, E, TE> for usize
where L: Length, E: Encoding<usize>, TE: Encoding<Tag>,

Source§

impl<L, E, TE> ZvtSerializerImpl<L, E, TE> for String
where L: Length, E: Encoding<String>, TE: Encoding<Tag>,

Source§

impl<L, E, TE> ZvtSerializerImpl<L, E, TE> for NaiveDateTime

Source§

impl<T, L, E, TE> ZvtSerializerImpl<L, E, TE> for Option<T>
where L: Length, E: Encoding<T>, TE: Encoding<Tag>, T: ZvtSerializerImpl<L, E, TE>,

The implementation for serializing/deserializing a optional Zvt fields.

Optional fields don’t generate anything if the data field is None. They generate the same output if the data field is provided.

When deserializing optional fields behave differently depending if a Tag is provided or not. If the Tag is None the deserialization always succeeds returning None as the result. If the Tag is provided, then the serialization error is propagated.

Source§

fn serialize_tagged(&self, tag: Option<Tag>) -> Vec<u8>

Source§

fn deserialize_tagged( bytes: &[u8], tag: Option<Tag>, ) -> Result<(Option<T>, &[u8]), ZVTError>

Source§

impl<T, L, E, TE> ZvtSerializerImpl<L, E, TE> for Vec<T>
where L: Length, E: Encoding<T>, TE: Encoding<Tag>, T: ZvtSerializerImpl<L, E, TE>,

The implementation for serializing/deserializing Vec

The Zvt protocol does not define a consistent handling of vectors. However, in most cases it assumes that every element is tagged and not the vector itself. Therefore we provide a default serialization/deserialization which does exactly this.

The serialization will return an empty vector for an empty input. Otherwise it will tag every element independently and collect the results.

The deserialization will deserialize the input until a failure occurs - this indicates that there are no more elements in the vector - and return the results. This means that all elements in the vector must be placed consecutively to each other.

Source§

fn serialize_tagged(&self, tag: Option<Tag>) -> Vec<u8>

Source§

fn deserialize_tagged( bytes: &[u8], tag: Option<Tag>, ) -> Result<(Vec<T>, &[u8]), ZVTError>

Source§

impl<TE: Encoding<Tag>> ZvtSerializerImpl<Tlv, Custom, TE> for Vec<u8>

Custom ZvtSerializerImpl which will just copy the data.

Source§

fn deserialize_tagged( bytes: &[u8], tag: Option<Tag>, ) -> ZVTResult<(Self, &[u8])>

Source§

fn serialize_tagged(&self, tag: Option<Tag>) -> Vec<u8>

Implementors§

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for CVendFunctions

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for CVendFunctionsEnhancedSystemInformationCompletion

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for RequestForData

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::feig::packets::WriteData

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::feig::packets::WriteFile

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for File

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::feig::packets::tlv::WriteData

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::feig::packets::tlv::WriteFile

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for Abort

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for Ack

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for CompletionData

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::Diagnosis

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for EndOfDay

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for Initialization

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for IntermediateStatusInformation

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for NumAndTotal

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for PartialReversal

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for PartialReversalAbort

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for PreAuthReversal

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for PrintLine

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for PrintSystemConfiguration

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::PrintTextBlock

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::ReadCard

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::ReceiptPrintoutCompletion

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::Registration

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for Reservation

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::ReservationAbort

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for ResetTerminal

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for SelectLanguage

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for SetTerminalId

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for SetTimeAndDate

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for SingleAmounts

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::StatusEnquiry

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::StatusInformation

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for Bmp60

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for DeviceInformation

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::tlv::Diagnosis

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for PreAuthData

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::tlv::PrintTextBlock

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::tlv::ReadCard

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::tlv::ReceiptPrintoutCompletion

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::tlv::Registration

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::tlv::ReservationAbort

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::tlv::StatusEnquiry

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for zvt::packets::tlv::StatusInformation

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for Subs

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for TextLines

Source§

impl<L: Length, TE: Encoding<Tag>> ZvtSerializerImpl<L, Default, TE> for ZvtString