So here is a weird thing:
julia> Iterators.product(OffsetArray(rand(3), -1:1), 1:2) |> collect
3×2 OffsetArray(::Matrix{Tuple{Float64, Int64}}, -1:1, 1:2) with eltype Tuple{Float64, Int64} with indices -1:1×1:2:
(0.892917, 1) (0.892917, 2)
(0.398366, 1) (0.398366, 2)
(0.550785, 1) (0.550785, 2)
julia> collect(ans)
3×2 Matrix{Tuple{Float64, Int64}}:
(0.892917, 1) (0.892917, 2)
(0.398366, 1) (0.398366, 2)
(0.550785, 1) (0.550785, 2)
Since collect
promises an Array
not an AbstractArray
I am thinking that the first return is wrong. But I think this should probably be consistent at least. At least I would assume that collect(collect()) == collect