39 lines
960 B
Django/Jinja
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 -%}
|