@@ -585,16 +585,27 @@ end
585
585
function Base. checkbounds (VA:: AbstractVectorOfArray , idx... )
586
586
checkbounds (Bool, VA, idx... ) || throw (BoundsError (VA, idx))
587
587
end
588
- function Base. copyto! (dest:: AbstractVectorOfArray{T,N} , src:: AbstractVectorOfArray{T,N} ) where {T,N}
589
- copyto! .(dest. u, src. u)
588
+ function Base. copyto! (dest:: AbstractVectorOfArray{T,N} , src:: AbstractVectorOfArray{T2,N} ) where {T, T2, N}
589
+ for (i, j) in zip (eachindex (dest. u), eachindex (src. u))
590
+ if ArrayInterface. ismutable (dest. u[i]) || dest. u[i] isa AbstractVectorOfArray
591
+ copyto! (dest. u[i], src. u[j])
592
+ else
593
+ dest. u[i] = StaticArraysCore. similar_type (dest. u[i])(src. u[j])
594
+ end
595
+ end
590
596
end
591
- function Base. copyto! (dest:: AbstractVectorOfArray{T, N} , src:: AbstractArray{T, N} ) where {T, N}
592
- for (i, slice) in enumerate (eachslice (src, dims = ndims (src)))
593
- copyto! (dest. u[i], slice)
597
+ function Base. copyto! (dest:: AbstractVectorOfArray{T, N} , src:: AbstractArray{T2, N} ) where {T, T2, N}
598
+ @show eltype (dest) eltype (src) typeof (src) typeof (dest. u)
599
+ for (i, slice) in zip (eachindex (dest. u), eachslice (src, dims = ndims (src)))
600
+ if ArrayInterface. ismutable (dest. u[i])
601
+ copyto! (dest. u[i], slice)
602
+ else
603
+ dest. u[i] = StaticArraysCore. similar_type (dest. u[i])(slice)
604
+ end
594
605
end
595
606
dest
596
607
end
597
- function Base. copyto! (dest:: AbstractVectorOfArray{T, N, <:AbstractVector{T}} , src:: AbstractVector{T } ) where {T, N}
608
+ function Base. copyto! (dest:: AbstractVectorOfArray{T, N, <:AbstractVector{T}} , src:: AbstractVector{T2 } ) where {T, T2 , N}
598
609
copyto! (dest. u, src)
599
610
dest
600
611
end
0 commit comments