k8s_openapi_codegen_common/templates/
struct.rs

1pub(crate) fn generate(
2    mut writer: impl std::io::Write,
3    vis: &str,
4    type_name: &str,
5    generics: super::Generics<'_>,
6    fields: &[super::Property<'_>],
7) -> Result<(), crate::Error> {
8    use std::fmt::Write;
9
10    let type_generics_type = generics.type_part.map(|part| format!("<{part}>")).unwrap_or_default();
11    let type_generics_where = generics.where_part.map(|part| format!(" where {part}")).unwrap_or_default();
12
13    let mut fields_string = String::new();
14    for super::Property { comment, field_name, field_type_name, .. } in fields {
15        if !fields_string.is_empty() {
16            writeln!(fields_string)?;
17        }
18
19        if let Some(comment) = comment {
20            for line in crate::get_comment_text(comment, "") {
21                writeln!(fields_string, "    ///{line}")?;
22            }
23        }
24
25        writeln!(
26            fields_string,
27            "    {vis}{field_name}: {field_type_name},",
28        )?;
29    }
30
31    writeln!(
32        writer,
33        include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/templates/struct.rs")),
34        type_name = type_name,
35        type_generics_type = type_generics_type,
36        type_generics_where = type_generics_where,
37        fields = fields_string,
38    )?;
39
40    Ok(())
41}