From 6f9c0d0f2906d05e27f9f11af6cefdf006c2cf4b Mon Sep 17 00:00:00 2001 From: Max Audron Date: Wed, 26 Feb 2025 17:53:08 +0100 Subject: refactor variant serialization code Factored out a lot of the serialization of variants into trait's that have auto impl so code duplication is much reduced --- src/primitive/signedint.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/primitive/signedint.rs') diff --git a/src/primitive/signedint.rs b/src/primitive/signedint.rs index b139685..d8361a3 100644 --- a/src/primitive/signedint.rs +++ b/src/primitive/signedint.rs @@ -4,7 +4,9 @@ use std::io::Cursor; use std::result::Result; use std::vec::Vec; -use crate::{deserialize::*, error::ProtocolError, serialize::*}; +use crate::{deserialize::*, error::ProtocolError, primitive, serialize::*}; + +use crate::serialize::SerializeVariant; impl Serialize for i64 { fn serialize(&self) -> Result, ProtocolError> { @@ -19,6 +21,10 @@ impl Deserialize for i64 { } } +impl SerializeVariant for i64 { + const TYPE: u32 = primitive::LONG; +} + impl Serialize for i32 { fn serialize(&self) -> Result, ProtocolError> { Ok(Vec::from(self.to_be_bytes())) @@ -32,6 +38,10 @@ impl Deserialize for i32 { } } +impl SerializeVariant for i32 { + const TYPE: u32 = primitive::INT; +} + impl Serialize for i16 { fn serialize(&self) -> Result, ProtocolError> { Ok(Vec::from(self.to_be_bytes())) @@ -45,6 +55,10 @@ impl Deserialize for i16 { } } +impl SerializeVariant for i16 { + const TYPE: u32 = primitive::SHORT; +} + impl Serialize for i8 { fn serialize(&self) -> Result, ProtocolError> { Ok(Vec::from(self.to_be_bytes())) @@ -57,3 +71,7 @@ impl Deserialize for i8 { return Ok((1, rdr.read_i8()?)); } } + +impl SerializeVariant for i8 { + const TYPE: u32 = primitive::CHAR; +} -- cgit v1.2.3