boomerang_runtime/env/
debug.rs

1use 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}