graphql_federated_graph/federated_graph/
debug.rs

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