From 1de674301713891af39ffddbc06974c0c5dda9db Mon Sep 17 00:00:00 2001 From: Vincent Herlemont Date: Sun, 17 Dec 2023 18:45:29 +0100 Subject: [PATCH] fix: move model trait to lib module --- libraries/native_model/src/lib.rs | 68 +++++++++++++++++++++++++++-- libraries/native_model/src/model.rs | 65 --------------------------- 2 files changed, 64 insertions(+), 69 deletions(-) delete mode 100644 libraries/native_model/src/model.rs diff --git a/libraries/native_model/src/lib.rs b/libraries/native_model/src/lib.rs index 4ae50aa8..8b68b606 100644 --- a/libraries/native_model/src/lib.rs +++ b/libraries/native_model/src/lib.rs @@ -31,12 +31,8 @@ mod codec; ))] pub use codec::*; mod header; -pub mod model; pub mod wrapper; -// Re-export -pub use model::*; - // Macro to generate a [`native_model`] implementation for a struct. pub use native_model_macro::*; @@ -133,3 +129,67 @@ pub fn encode_downgrade(model: T, version: u32) -> Result(data: Vec) -> Result<(T, u32)> { T::native_model_decode(data) } + +pub trait Model: Sized { + fn native_model_id() -> u32; + fn native_model_id_str() -> &'static str; + fn native_model_version() -> u32; + fn native_model_version_str() -> &'static str; + + // --------------- Decode --------------- + fn native_model_decode_body(data: Vec, id: u32) -> DecodeResult + where + Self: Sized; + + fn native_model_decode_upgrade_body(data: Vec, id: u32, version: u32) -> Result + where + Self: Sized; + + fn native_model_decode(data: Vec) -> Result<(Self, u32)> + where + Self: Sized, + { + let native_model = crate::Wrapper::deserialize(&data[..]).unwrap(); + let source_id = native_model.get_id(); + let source_version = native_model.get_version(); + let result = Self::native_model_decode_upgrade_body( + native_model.value().to_vec(), + source_id, + source_version, + )?; + Ok((result, source_version)) + } + + // --------------- Encode --------------- + + fn native_model_encode_body(&self) -> EncodeResult> + where + Self: Sized; + + fn native_model_encode_downgrade_body(self, version: u32) -> Result> + where + Self: Sized; + + fn native_model_encode(&self) -> Result> + where + Self: Sized, + { + let mut data = self.native_model_encode_body()?; + let data = crate::native_model_encode( + &mut data, + Self::native_model_id(), + Self::native_model_version(), + ); + Ok(data) + } + + fn native_model_encode_downgrade(self, version: u32) -> Result> + where + Self: Sized, + { + let version = version.clone(); + let mut data = self.native_model_encode_downgrade_body(version)?; + let data = crate::native_model_encode(&mut data, Self::native_model_id(), version); + Ok(data) + } +} diff --git a/libraries/native_model/src/model.rs b/libraries/native_model/src/model.rs deleted file mode 100644 index fa813184..00000000 --- a/libraries/native_model/src/model.rs +++ /dev/null @@ -1,65 +0,0 @@ -use crate::{DecodeResult, EncodeResult, Result}; - -pub trait Model: Sized { - fn native_model_id() -> u32; - fn native_model_id_str() -> &'static str; - fn native_model_version() -> u32; - fn native_model_version_str() -> &'static str; - - // --------------- Decode --------------- - fn native_model_decode_body(data: Vec, id: u32) -> DecodeResult - where - Self: Sized; - - fn native_model_decode_upgrade_body(data: Vec, id: u32, version: u32) -> Result - where - Self: Sized; - - fn native_model_decode(data: Vec) -> Result<(Self, u32)> - where - Self: Sized, - { - let native_model = crate::Wrapper::deserialize(&data[..]).unwrap(); - let source_id = native_model.get_id(); - let source_version = native_model.get_version(); - let result = Self::native_model_decode_upgrade_body( - native_model.value().to_vec(), - source_id, - source_version, - )?; - Ok((result, source_version)) - } - - // --------------- Encode --------------- - - fn native_model_encode_body(&self) -> EncodeResult> - where - Self: Sized; - - fn native_model_encode_downgrade_body(self, version: u32) -> Result> - where - Self: Sized; - - fn native_model_encode(&self) -> Result> - where - Self: Sized, - { - let mut data = self.native_model_encode_body()?; - let data = crate::native_model_encode( - &mut data, - Self::native_model_id(), - Self::native_model_version(), - ); - Ok(data) - } - - fn native_model_encode_downgrade(self, version: u32) -> Result> - where - Self: Sized, - { - let version = version.clone(); - let mut data = self.native_model_encode_downgrade_body(version)?; - let data = crate::native_model_encode(&mut data, Self::native_model_id(), version); - Ok(data) - } -}