oneiros-model 0.0.7

Shared domain types for oneiros
Documentation
use serde::{Deserialize, Serialize};

#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(transparent)]
pub struct Size(usize);

impl Size {
    pub fn new(arg: usize) -> Self {
        Self(arg)
    }

    pub fn as_i64(self) -> i64 {
        self.0 as i64
    }
}

impl From<usize> for Size {
    fn from(value: usize) -> Self {
        Size(value)
    }
}

impl core::ops::Deref for Size {
    type Target = usize;

    fn deref(&self) -> &Self::Target {
        &self.0
    }
}

impl core::ops::DerefMut for Size {
    fn deref_mut(&mut self) -> &mut Self::Target {
        &mut self.0
    }
}