boomerang_runtime/env/
debug.rs1use super::{Env, ReactionGraph};
2use crate::fmt_utils as fmt;
3
4impl std::fmt::Debug for Env {
5 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
6 let reactors = fmt::from_fn(|f| {
7 f.debug_map()
8 .entries(
9 self.reactors
10 .iter()
11 .map(|(k, reactor)| (format!("{k:?}"), reactor.get_name())),
12 )
13 .finish()
14 });
15
16 let actions = fmt::from_fn(|f| {
17 let e = self
18 .actions
19 .iter()
20 .map(|(action_key, action)| (format!("{action_key:?}"), action.to_string()));
21 f.debug_map().entries(e).finish()
22 });
23
24 let ports = fmt::from_fn(|f| {
25 f.debug_map()
26 .entries(
27 self.ports
28 .iter()
29 .map(|(k, v)| (format!("{k:?}"), v.to_string())),
30 )
31 .finish()
32 });
33
34 let reactions = fmt::from_fn(|f| {
35 f.debug_map()
36 .entries(
37 self.reactions
38 .iter()
39 .map(|(reaction_key, reaction)| (format!("{reaction_key:?}"), reaction)),
40 )
41 .finish()
42 });
43
44 f.debug_struct("Env")
45 .field("reactors", &reactors)
46 .field("actions", &actions)
47 .field("ports", &ports)
48 .field("reactions", &reactions)
49 .finish()
50 }
51}
52
53impl std::fmt::Debug for ReactionGraph {
54 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
55 let action_triggers = fmt::from_fn(|f| {
56 let e = self.action_triggers.iter().map(|(action_key, v)| {
57 let v = fmt::from_fn(|f| {
58 let e = v.iter().map(|(level, reaction_key)| {
59 (format!("{level:?}"), format!("{reaction_key:?}"))
60 });
61 f.debug_map().entries(e).finish()
62 });
63
64 (format!("{action_key:?}"), v)
65 });
66 f.debug_map().entries(e).finish()
67 });
68
69 let port_triggers = fmt::from_fn(|f| {
70 let e = self.port_triggers.iter().map(|(port_key, v)| {
71 let v = fmt::from_fn(|f| {
72 let e = v.iter().map(|(level, reaction_key)| {
73 (format!("{level:?}"), format!("{reaction_key:?}"))
74 });
75 f.debug_map().entries(e).finish()
76 });
77
78 (format!("{port_key:?}"), v)
79 });
80 f.debug_map().entries(e).finish()
81 });
82
83 f.debug_struct("TriggerMap")
84 .field("action_triggers", &action_triggers)
85 .field("port_triggers", &port_triggers)
86 .field("startup_reactions", &self.startup_reactions)
87 .field("shutdown_reactions", &self.shutdown_reactions)
88 .field("reaction_set_limits", &self.reaction_set_limits)
89 .field("reaction_use_ports", &self.reaction_use_ports)
90 .field("reaction_effect_ports", &self.reaction_effect_ports)
91 .field("reaction_actions", &self.reaction_actions)
92 .field("reactor_bank_infos", &self.reactor_bank_infos)
93 .finish()
94 }
95}