<pre class="rust item-decl"><code>
    {{ self.render_union()|safe }}
</code></pre>
{% if !self.is_type_alias %}
    {{ self.document()|safe }}
{% endif %}
{% if self.fields_iter().next().is_some() %}
    <h2 id="fields" class="fields section-header"> {# #}
        Fields<a href="#fields" class="anchor">§</a> {# #}
    </h2>
    {% for (field, ty) in self.fields_iter() %}
        {% let name = field.name.expect("union field name") %}
        <span id="structfield.{{ name }}" class="{{ ItemType::StructField +}} section-header"> {# #}
            <a href="#structfield.{{ name }}" class="anchor field">§</a> {# #}
            <code>{{+ self.print_field_attrs(field)|safe }}{{ name }}: {{+ self.print_ty(ty)|safe }}</code> {# #}
        </span>
        {% if let Some(stability_class) = self.stability_field(field) %}
            <span class="stab {{ stability_class }}"></span>
        {% endif %}
        {{ self.document_field(field)|safe }}
    {% endfor %}
{% endif %}
{{ self.render_assoc_items()|safe }}
{{ self.document_type_layout()|safe }}
