inc-complete 0.10.3

A library for writing incremental computations that re-execute the minimum number of steps when an input is changed
Documentation
use std::{collections::HashSet, sync::Arc};

#[derive(
    Debug, Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, serde::Serialize, serde::Deserialize,
)]
#[serde(transparent)]
pub struct Cell(u32);

impl Cell {
    pub(crate) fn new(index: u32) -> Self {
        Self(index)
    }
}

pub(crate) struct CellData {
    pub(crate) computation_id: u32,
    pub(crate) last_updated_version: u32,
    pub(crate) last_run_version: u32,
    pub(crate) last_verified_version: u32,
    pub(crate) dependencies: Vec<Cell>,
    pub(crate) input_dependencies: HashSet<Cell, rustc_hash::FxBuildHasher>,
    pub(crate) lock: Arc<parking_lot::Mutex<()>>,
}

impl CellData {
    pub(crate) fn new(computation_id: u32) -> Self {
        Self {
            computation_id,
            last_updated_version: 0,
            last_run_version: 0,
            last_verified_version: 0,
            dependencies: Vec::new(),
            input_dependencies: Default::default(),
            lock: Arc::new(parking_lot::Mutex::new(())),
        }
    }
}