1use std::{collections::HashSet, sync::Arc};
2
3#[derive(
4 Debug, Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, serde::Serialize, serde::Deserialize,
5)]
6#[serde(transparent)]
7pub struct Cell(u32);
8
9impl Cell {
10 pub(crate) fn new(index: u32) -> Self {
11 Self(index)
12 }
13}
14
15pub(crate) struct CellData {
16 pub(crate) computation_id: u32,
17 pub(crate) last_updated_version: u32,
18 pub(crate) last_run_version: u32,
19 pub(crate) last_verified_version: u32,
20 pub(crate) dependencies: Vec<Cell>,
21 pub(crate) input_dependencies: HashSet<Cell, rustc_hash::FxBuildHasher>,
22 pub(crate) lock: Arc<parking_lot::Mutex<()>>,
23}
24
25impl CellData {
26 pub(crate) fn new(computation_id: u32) -> Self {
27 Self {
28 computation_id,
29 last_updated_version: 0,
30 last_run_version: 0,
31 last_verified_version: 0,
32 dependencies: Vec::new(),
33 input_dependencies: Default::default(),
34 lock: Arc::new(parking_lot::Mutex::new(())),
35 }
36 }
37}