aboutsummaryrefslogtreecommitdiff
path: root/src/primitive/signedint.rs
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2025-02-26 17:53:08 +0100
committerMax Audron <audron@cocaine.farm>2025-02-26 17:53:08 +0100
commit6f9c0d0f2906d05e27f9f11af6cefdf006c2cf4b (patch)
tree3c92d681f8c98786bf7371ecfece60ed4f8d4a7c /src/primitive/signedint.rs
parentadd MsgId and BufferId to objects where needed (diff)
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
Diffstat (limited to 'src/primitive/signedint.rs')
-rw-r--r--src/primitive/signedint.rs20
1 files changed, 19 insertions, 1 deletions
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<Vec<u8>, 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<Vec<u8>, 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<Vec<u8>, 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<Vec<u8>, 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;
+}