Skip to main content

write_nested_pointer_array_list

Function write_nested_pointer_array_list 

Source
pub fn write_nested_pointer_array_list(
    builder: &mut BufferBuilder<'_>,
    field_name: &str,
    inner_element: &TypeRepr,
    items: &[Value],
) -> Result<(), BufferError>
Expand description

Marshal a List<List<String>> / List<List<Schema>> (F5: a doubly- nested pointer-array list, where each outer element is itself a pointer-array list) into field_name’s tail area. inner_element is the innermost element type (String / Schema / a deeper List<…>), matching the marshal_list_list_in dispatch contract; items are the outer Value::List rows (each itself a List<inner_element>). The whole nested structure is written at child-buffer-relative offsets and the field’s pointer slot patched to the outer header — the relocation walker’s PtrArrayElem::InnerList descriptor rebases the inner pointer arrays on the later arena rebase.

Shared by both compiled backends so they emit byte-identical input buffers. The layout pass admits these shapes (inner_list_record_ alignment); the inline-fixed List<List<scalar>> case keeps using write_nested_scalar_list.