sim_incremental_core/
budget.rs1#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
5pub enum BudgetKind {
6 Work,
8 Observations,
10 Depth,
12 Output,
14}
15
16#[derive(Clone, Copy, Debug, Eq, PartialEq)]
18pub struct QueryBudgets {
19 pub max_work: usize,
21 pub max_observations: usize,
23 pub max_depth: usize,
25 pub max_output: usize,
27}
28
29impl QueryBudgets {
30 #[must_use]
32 pub const fn unlimited() -> Self {
33 Self {
34 max_work: usize::MAX,
35 max_observations: usize::MAX,
36 max_depth: usize::MAX,
37 max_output: usize::MAX,
38 }
39 }
40
41 #[must_use]
43 pub const fn new(
44 max_work: usize,
45 max_observations: usize,
46 max_depth: usize,
47 max_output: usize,
48 ) -> Self {
49 Self {
50 max_work,
51 max_observations,
52 max_depth,
53 max_output,
54 }
55 }
56}
57
58impl Default for QueryBudgets {
59 fn default() -> Self {
60 Self::unlimited()
61 }
62}
63
64#[derive(Clone, Copy, Debug, Eq, PartialEq)]
66pub struct SnapshotBudgets {
67 pub max_nodes: usize,
69 pub max_edges: usize,
71}
72
73impl SnapshotBudgets {
74 #[must_use]
76 pub const fn unlimited() -> Self {
77 Self {
78 max_nodes: usize::MAX,
79 max_edges: usize::MAX,
80 }
81 }
82
83 #[must_use]
85 pub const fn new(max_nodes: usize, max_edges: usize) -> Self {
86 Self {
87 max_nodes,
88 max_edges,
89 }
90 }
91}
92
93impl Default for SnapshotBudgets {
94 fn default() -> Self {
95 Self::unlimited()
96 }
97}