We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 9ce1c70 commit 05d1c2aCopy full SHA for 05d1c2a
src/sink_array.jl
@@ -1,10 +1,17 @@
1
+init_sink(enumerable::Enumerable) = Vector{eltype(enumerable)}()
2
+
3
+# preserve AbstractArray subtype when collecting
4
+# allows collecting CategoricalValue into CategoricalArray
5
+init_sink(enumerable::SimpleSourceEnumerable{T,<:AbstractVector{T}}) where T =
6
+ similar(source(enumerable), 0)
7
8
+# recurse to get to the root source
9
+init_sink(enumerable::SimpleSourceEnumerable{T,<:SimpleSourceEnumerable{T}}) where T =
10
+ init_sink(source(enumerable))
11
12
function Base.collect(enumerable::Enumerable)
- T = eltype(enumerable)
- ret = Array{T}(0)
- for i in enumerable
- push!(ret, i)
- end
- return ret
13
+ ret = init_sink(enumerable)
14
+ append!(ret, enumerable)
15
end
16
17
function Base.collect{TS,Provider}(source::Queryable{TS,Provider})
0 commit comments