Model

Trait Model 

Source
pub trait Model: Sized {
    // Required methods
    fn native_model_id() -> u32;
    fn native_model_id_str() -> &'static str;
    fn native_model_version() -> u32;
    fn native_model_version_str() -> &'static str;
    fn native_model_decode_body(data: Vec<u8>, id: u32) -> DecodeResult<Self>;
    fn native_model_decode_upgrade_body(
        data: Vec<u8>,
        id: u32,
        version: u32,
    ) -> Result<Self>;
    fn native_model_encode_body(&self) -> EncodeResult<Vec<u8>>;
    fn native_model_encode_downgrade_body(self, version: u32) -> Result<Vec<u8>>;

    // Provided methods
    fn native_model_decode(data: impl AsRef<[u8]>) -> Result<(Self, u32)> { ... }
    fn native_model_encode(&self) -> Result<Vec<u8>> { ... }
    fn native_model_encode_downgrade(self, version: u32) -> Result<Vec<u8>> { ... }
}

Required Methods§

Provided Methods§

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.

Implementors§