dfir_rs/scheduled/mod.rs
1//! DFIR's outer scheduled layer. Deals with inter-subgraph runtime data-passing and scheduling.
2//!
3//! The most important item is the [`Dfir`](graph::Dfir) struct. Most of the items in this
4//! module are supporting the implementation of that struct and its operation.
5
6use crate::util::slot_vec::Key;
7
8pub mod context;
9pub mod graph;
10pub mod graph_ext;
11pub mod handoff;
12pub mod input;
13pub mod net;
14pub mod port;
15pub mod query;
16pub mod reactor;
17pub mod state;
18pub(crate) mod subgraph;
19
20pub mod ticks;
21
22/// Tag for [`SubgraphId`].
23pub enum SubgraphTag {}
24/// A subgraph's ID. Invalid if used in a different [`graph::Dfir`]
25/// instance than the original that created it.
26pub type SubgraphId = Key<SubgraphTag>;
27
28/// Tag for [`HandoffId`].
29pub enum HandoffTag {}
30/// A handoff's ID. Invalid if used in a different [`graph::Dfir`]
31/// instance than the original that created it.
32pub type HandoffId = Key<HandoffTag>;
33
34/// A staten handle's ID. Invalid if used in a different [`graph::Dfir`]
35/// instance than the original that created it.
36#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
37#[repr(transparent)]
38pub struct StateId(pub(crate) usize);
39
40/// Tag for [`LoopId`].
41pub enum LoopTag {}
42/// A loop's ID.
43pub type LoopId = Key<LoopTag>;