in uniffi_bindgen/src/bindings/ruby/templates/RustBufferBuilder.rb [174:199]
def write_{{ canonical_type_name }}(v)
{%- if e.is_flat() %}
pack_into(4, 'l>', v)
{%- else -%}
{%- for variant in e.variants() %}
if v.{{ variant.name()|var_name_rb }}?
pack_into(4, 'l>', {{ loop.index }})
{%- for field in variant.fields() %}
self.write_{{ self::canonical_name(field.as_type().borrow()).borrow()|class_name_rb }}(v.{{ field.name() }})
{%- endfor %}
end
{%- endfor %}
{%- endif %}
end
{% endif %}
{% when Type::Record { name: record_name, .. } -%}
{%- let rec = ci.get_record_definition(record_name).unwrap() -%}
def write_{{ canonical_type_name }}(v)
{%- for field in rec.fields() %}
self.write_{{ self::canonical_name(field.as_type().borrow()).borrow()|class_name_rb }}(v.{{ field.name()|var_name_rb }})
{%- endfor %}
end