use crate::serial::{Decodable, Encodable}; use crate::Result; pub struct Slab { asset_type: String, index: u64, payload: Vec, } impl Slab { pub fn new(asset_type: String, payload: Vec) -> Self { let index = 0; Slab { asset_type, index, payload, } } pub fn set_index(&mut self, index: u64) { self.index = index; } pub fn get_index(&self) -> u64 { self.index } pub fn get_payload(&self) -> Vec { self.payload.clone() } } impl Encodable for Slab { fn encode(&self, mut s: S) -> Result { let mut len = 0; len += self.asset_type.encode(&mut s)?; len += self.index.encode(&mut s)?; len += self.payload.encode(&mut s)?; Ok(len) } } impl Decodable for Slab { fn decode(mut d: D) -> Result { Ok(Self { asset_type: Decodable::decode(&mut d)?, index: Decodable::decode(&mut d)?, payload: Decodable::decode(&mut d)?, }) } }