Files
mizan/protocol/mizan-codegen/python/pydantic_to_rust/templates/struct.rs.j2
2026-07-30 21:12:29 -04:00

39 lines
960 B
Django/Jinja

{%- 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 -%}