write_{{ canonical_type_name }}

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