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}