fn output_container()

in serde-generate/src/golang.rs [913:961]


    fn output_container(&mut self, name: &str, format: &ContainerFormat) -> Result<()> {
        use ContainerFormat::*;
        let fields = match format {
            UnitStruct => Vec::new(),
            NewTypeStruct(format) => match format.as_ref() {
                // See comment in `output_variant`.
                Format::TypeName(_) | Format::Option(_) => vec![Named {
                    name: "Value".to_string(),
                    value: format.as_ref().clone(),
                }],
                _ => {
                    self.output_struct_or_variant_new_type_container(None, None, name, format)?;
                    return Ok(());
                }
            },
            TupleStruct(formats) => formats
                .iter()
                .enumerate()
                .map(|(i, f)| Named {
                    name: format!("Field{}", i),
                    value: f.clone(),
                })
                .collect(),
            Struct(fields) => fields
                .iter()
                .map(|f| Named {
                    name: f.name.to_camel_case(),
                    value: f.value.clone(),
                })
                .collect(),
            Enum(variants) => {
                let variants = variants
                    .iter()
                    .map(|(i, f)| {
                        (
                            *i,
                            Named {
                                name: f.name.to_camel_case(),
                                value: f.value.clone(),
                            },
                        )
                    })
                    .collect();
                self.output_enum_container(name, &variants)?;
                return Ok(());
            }
        };
        self.output_struct_or_variant_container(None, None, name, &fields)
    }