in src/arraytypes/list.jl [103:130]
function ToList(input; largelists::Bool=false)
AT = eltype(input)
ST = Base.nonmissingtype(AT)
K = ArrowTypes.ArrowKind(ST)
stringtype = ArrowTypes.isstringtype(K) || ST <: Base.CodeUnits
T = stringtype ? UInt8 : eltype(ST)
len = stringtype ? _ncodeunits : length
data = AT[]
I = largelists ? Int64 : Int32
inds = I[0]
sizehint!(data, length(input))
sizehint!(inds, length(input))
totalsize = I(0)
for x in input
if x === missing
push!(data, missing)
else
push!(data, x)
totalsize += len(x)
if I === Int32 && totalsize > 2147483647
I = Int64
inds = convert(Vector{Int64}, inds)
end
end
push!(inds, totalsize)
end
return ToList{T,stringtype,AT,I}(data, inds)
end