{%- import "type.rs.j2" as types -%} {%- import "default.rs.j2" as defaults -%} {%- for line in doc_lines -%} /// {{ line }} {% endfor -%} #[derive({{ derives | join(", ") }})] {% for attr in extra_attrs -%} {{ attr }} {% endfor -%} pub struct {{ name }} { {%- for field in fields %} {%- if field.default_fn %} #[serde(default = "{{ field.default_fn }}")] {%- endif %} pub {{ field.ident }}: {{ types.rust_type(field.type) }}, {%- endfor %} } {% for fn in default_fns -%} fn {{ fn.name }}() -> {{ types.rust_type(fn.type) }} { {{ defaults.default_body(fn.body) }} } {% endfor -%} {% if default_fns %} {% endif -%} {% if fields -%} impl Default for {{ name }} { fn default() -> Self { Self { {%- for field in fields %} {%- if field.default_fn %} {{ field.ident }}: {{ field.default_fn }}(), {%- else %} {{ field.ident }}: ::std::default::Default::default(), {%- endif %} {%- endfor %} } } } {% endif -%}