doku/printers/json/
print_struct.rs1use super::*;
2
3impl<'ty> Ctxt<'_, 'ty, '_> {
4 pub(super) fn print_struct(
5 &mut self,
6 fields: &'ty Fields,
7 transparent: bool,
8 variant: Option<&'ty Variant>,
9 ) {
10 if transparent {
11 self.print_transparent_struct(fields);
12 } else {
13 self.print_fields(fields, variant);
14 }
15 }
16
17 fn print_transparent_struct(&mut self, fields: &'ty Fields) {
18 let fields: Vec<_> = match fields {
19 Fields::Named { fields } => {
20 fields.iter().map(|(_, field)| field).collect()
21 }
22 Fields::Unnamed { fields } => fields.iter().collect(),
23 Fields::Unit => Default::default(),
24 };
25
26 if fields.len() != 1 {
29 panic!("Found a struct with invalid number of transparent fields");
30 }
31
32 let example = self.example();
33
34 self.nested()
35 .with_ty(&fields[0].ty)
36 .with_example(example)
37 .print();
38 }
39}