graphql_federated_graph/federated_graph/
debug.rs1use super::{EnumValueId, FederatedGraph};
2use std::fmt;
3
4struct DebugFn<F>(F)
5where
6 F: Fn(&mut fmt::Formatter<'_>) -> fmt::Result;
7
8impl<F> fmt::Debug for DebugFn<F>
9where
10 F: Fn(&mut fmt::Formatter<'_>) -> fmt::Result,
11{
12 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
13 (self.0)(f)
14 }
15}
16
17impl fmt::Debug for FederatedGraph {
18 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
19 f.debug_struct(std::any::type_name::<Self>())
20 .field(
21 "enum_definitions",
22 &DebugFn(|f| f.debug_list().entries(self.iter_enum_definitions()).finish()),
23 )
24 .field(
25 "enum_values",
26 &DebugFn(|f| {
27 f.debug_list()
28 .entries((0..self.enum_values.len()).map(|idx| self.at(EnumValueId::from(idx))))
29 .finish()
30 }),
31 )
32 .field("scalar_definitions", &self.scalar_definitions)
33 .field("input_value_definitions", &self.input_value_definitions)
34 .field("object_definitions", &self.objects)
35 .field("fields", &self.fields)
36 .field("strings", &self.strings)
37 .finish_non_exhaustive()
38 }
39}