Skip to main content

FieldType

Trait FieldType 

Source
pub trait FieldType<'a>
where Self: Sized,
{ type Error; type SerializeSettings: Default; // Required methods fn serialize_with<B>( &self, buffer: &mut B, settings: Self::SerializeSettings, ) -> usize where B: Buffer; fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>; // Provided methods fn serialize<B>(&self, buffer: &mut B) -> usize where B: Buffer { ... } fn deserialize_lossy(data: &'a [u8]) -> Result<Self, Self::Error> { ... } fn to_bytes(&self) -> Vec<u8> { ... } fn to_string(&self) -> String { ... } }
Expand description

Provides (de)serialization logic for a Rust type as FIX field values.

See the field_types module for more information.

Required Associated Types§

Source

type Error

The error type that can arise during deserialization.

Source

type SerializeSettings: Default

A type with values that customize the serialization algorithm, e.g. padding information.

Required Methods§

Source

fn serialize_with<B>( &self, buffer: &mut B, settings: Self::SerializeSettings, ) -> usize
where B: Buffer,

Writes self to buffer using custom serialization settings.

Source

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Parses and deserializes from data.

Provided Methods§

Source

fn serialize<B>(&self, buffer: &mut B) -> usize
where B: Buffer,

Writes self to buffer using default settings.

Source

fn deserialize_lossy(data: &'a [u8]) -> Result<Self, Self::Error>

Like FieldType::deserialize, but it’s allowed to skip some amount of input checking. Invalid inputs might not trigger errors and instead be deserialized as random values.

§Safety

This method remains 100% safe even on malformed inputs.

Source

fn to_bytes(&self) -> Vec<u8>

Serializes self to a Vec of bytes, allocated on the fly.

Source

fn to_string(&self) -> String

Allocates a String representation of self, using FieldType::to_bytes.

§Panics

This function will panic if the underlying byte representation is not valid UTF-8. As such, you should only ever use this function for FieldType implementors that are guaranteed to be representable with valid UTF-8 (like numbers with ASCII digits).

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<'a> FieldType<'a> for &'a str

Source§

type Error = Utf8Error

Source§

type SerializeSettings = ()

Source§

fn serialize_with<B>(&self, buffer: &mut B, _settings: ()) -> usize
where B: Buffer,

Source§

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

impl<'a> FieldType<'a> for &'a [u8]

Source§

type Error = ()

Source§

type SerializeSettings = ()

Source§

fn serialize_with<B>(&self, buffer: &mut B, _settings: ()) -> usize
where B: Buffer,

Source§

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

impl<'a> FieldType<'a> for bool

Source§

type Error = &'static str

Source§

type SerializeSettings = ()

Source§

fn serialize_with<B>(&self, buffer: &mut B, _settings: ()) -> usize
where B: Buffer,

Source§

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

impl<'a> FieldType<'a> for f32

Source§

type Error = &'static str

Source§

type SerializeSettings = ()

Source§

fn serialize_with<B>(&self, buffer: &mut B, _settings: ()) -> usize
where B: Buffer,

Source§

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

impl<'a> FieldType<'a> for f64

Source§

type Error = &'static str

Source§

type SerializeSettings = ()

Source§

fn serialize_with<B>(&self, buffer: &mut B, _settings: ()) -> usize
where B: Buffer,

Source§

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

impl<'a> FieldType<'a> for i32

Source§

type Error = &'static str

Source§

type SerializeSettings = ()

Source§

fn serialize_with<B>(&self, buffer: &mut B, _settings: ()) -> usize
where B: Buffer,

Source§

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

fn deserialize_lossy(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

impl<'a> FieldType<'a> for i64

Source§

type Error = &'static str

Source§

type SerializeSettings = ()

Source§

fn serialize_with<B>(&self, buffer: &mut B, _settings: ()) -> usize
where B: Buffer,

Source§

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

fn deserialize_lossy(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

impl<'a> FieldType<'a> for i128

Source§

type Error = &'static str

Source§

type SerializeSettings = ()

Source§

fn serialize_with<B>(&self, buffer: &mut B, _settings: ()) -> usize
where B: Buffer,

Source§

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

fn deserialize_lossy(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

impl<'a> FieldType<'a> for u32

Source§

type Error = &'static str

Source§

type SerializeSettings = ZeroPadding

Source§

fn serialize_with<B>(&self, buffer: &mut B, padding: ZeroPadding) -> usize
where B: Buffer,

Source§

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

fn deserialize_lossy(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

impl<'a> FieldType<'a> for u64

Source§

type Error = &'static str

Source§

type SerializeSettings = ZeroPadding

Source§

fn serialize_with<B>(&self, buffer: &mut B, padding: ZeroPadding) -> usize
where B: Buffer,

Source§

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

fn deserialize_lossy(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

impl<'a> FieldType<'a> for u128

Source§

type Error = &'static str

Source§

type SerializeSettings = ZeroPadding

Source§

fn serialize_with<B>(&self, buffer: &mut B, padding: ZeroPadding) -> usize
where B: Buffer,

Source§

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

fn deserialize_lossy(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

impl<'a> FieldType<'a> for usize

Source§

type Error = &'static str

Source§

type SerializeSettings = ZeroPadding

Source§

fn serialize_with<B>(&self, buffer: &mut B, padding: ZeroPadding) -> usize
where B: Buffer,

Source§

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

fn deserialize_lossy(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

impl<'a, const N: usize> FieldType<'a> for &'a [u8; N]

Source§

type Error = ()

Source§

type SerializeSettings = ()

Source§

fn serialize_with<B>(&self, buffer: &mut B, _settings: ()) -> usize
where B: Buffer,

Source§

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Source§

impl<'a, const N: usize> FieldType<'a> for [u8; N]

Source§

type Error = ()

Source§

type SerializeSettings = ()

Source§

fn serialize_with<B>(&self, buffer: &mut B, settings: ()) -> usize
where B: Buffer,

Source§

fn deserialize(data: &'a [u8]) -> Result<Self, Self::Error>

Implementors§

Source§

impl<'a> FieldType<'a> for ApplVerId

Source§

impl<'a> FieldType<'a> for EncryptMethod

Source§

impl<'a> FieldType<'a> for MessageEncoding

Source§

impl<'a> FieldType<'a> for MsgDirection

Source§

impl<'a> FieldType<'a> for MsgType

Source§

impl<'a> FieldType<'a> for SessionRejectReason

Source§

impl<'a> FieldType<'a> for CheckSum

Source§

impl<'a> FieldType<'a> for Date

Source§

impl<'a> FieldType<'a> for MonthYear

Source§

impl<'a> FieldType<'a> for Time

Source§

impl<'a> FieldType<'a> for Timestamp

Source§

impl<'a> FieldType<'a> for Tz

Source§

impl<'a> FieldType<'a> for TzTime

Source§

impl<'a> FieldType<'a> for TzTimestamp

Source§

impl<'a> FieldType<'a> for TagU32