use crate::message::field::value::FromFixBytes;
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum BeginString {
FIX44,
}
impl BeginString {
#[must_use]
pub const fn tag() -> u16 {
8
}
}
impl From<BeginString> for &'static [u8] {
fn from(val: BeginString) -> Self {
match val {
BeginString::FIX44 => b"FIX.4.4",
}
}
}
impl From<BeginString> for Vec<u8> {
fn from(val: BeginString) -> Self {
<&[u8]>::from(val).to_vec()
}
}
#[derive(Debug, Clone, PartialEq, thiserror::Error)]
pub enum ParseError<'input> {
#[error("unsupported fix version: {}", String::from_utf8_lossy(.0))]
Unsupported(&'input [u8]),
}
impl FromFixBytes for BeginString {
type Error<'input> = ParseError<'input>;
fn from_fix_bytes(bytes: &[u8]) -> Result<Self, Self::Error<'_>>
where
Self: Sized,
{
if bytes == <&[u8]>::from(BeginString::FIX44) {
Ok(BeginString::FIX44)
} else {
Err(ParseError::Unsupported(bytes))
}
}
}