zbox 0.9.2

ZboxFS is a zero-details, privacy-focused in-app file system.
Documentation
use error::{Error, Result};

#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct RefCnt(u32);

impl RefCnt {
    pub fn new() -> Self {
        RefCnt::default()
    }

    #[inline]
    pub fn val(&self) -> u32 {
        self.0
    }

    #[inline]
    pub fn inc_ref(&mut self) -> Result<u32> {
        self.0
            .checked_add(1)
            .ok_or(Error::RefOverflow)
            .and_then(|r| {
                self.0 = r;
                Ok(r)
            })
    }

    #[inline]
    pub fn dec_ref(&mut self) -> Result<u32> {
        self.0
            .checked_sub(1)
            .ok_or(Error::RefUnderflow)
            .and_then(|r| {
                self.0 = r;
                Ok(r)
            })
    }
}