@@ -585,16 +585,26 @@ 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
+ for (i, slice) in zip (eachindex (dest. u), eachslice (src, dims = ndims (src)))
599
+ if ArrayInterface. ismutable (dest. u[i]) || dest. u[i] isa AbstractVectorOfArray
600
+ copyto! (dest. u[i], slice)
601
+ else
602
+ dest. u[i] = StaticArraysCore. similar_type (dest. u[i])(slice)
603
+ end
594
604
end
595
605
dest
596
606
end
597
- function Base. copyto! (dest:: AbstractVectorOfArray{T, N, <:AbstractVector{T}} , src:: AbstractVector{T } ) where {T, N}
607
+ function Base. copyto! (dest:: AbstractVectorOfArray{T, N, <:AbstractVector{T}} , src:: AbstractVector{T2 } ) where {T, T2 , N}
598
608
copyto! (dest. u, src)
599
609
dest
600
610
end
0 commit comments