function arrowvector()

in src/arraytypes/map.jl [53:83]


function arrowvector(::MapKind, x, i, nl, fi, de, ded, meta; largelists::Bool=false, kw...)
    len = length(x)
    validity = ValidityBitmap(x)
    ET = eltype(x)
    DT = Base.nonmissingtype(ET)
    KDT, VDT = keytype(DT), valtype(DT)
    ArrowTypes.concrete_or_concreteunion(KDT) || throw(
        ArgumentError(
            "`keytype(d)` must be concrete to serialize map-like `d`, but `keytype(d) == $KDT`",
        ),
    )
    ArrowTypes.concrete_or_concreteunion(VDT) || throw(
        ArgumentError(
            "`valtype(d)` must be concrete to serialize map-like `d`, but `valtype(d) == $VDT`",
        ),
    )
    KT = KeyValue{KDT,VDT}
    VT = Vector{KT}
    T = DT !== ET ? Union{Missing,VT} : VT
    flat = ToList(T[keyvalues(KT, y) for y in x]; largelists=largelists)
    offsets = Offsets(UInt8[], flat.inds)
    data = arrowvector(flat, i, nl + 1, fi, de, ded, nothing; largelists=largelists, kw...)
    K, V = keyvaluetypes(eltype(data))
    return Map{withmissing(ET, Dict{K,V}),eltype(flat.inds),typeof(data)}(
        validity,
        offsets,
        data,
        len,
        meta,
    )
end