Skip to content

Commit 559bcb6

Browse files
committed
method for copyto!(dest, src) too
1 parent 8597c9a commit 559bcb6

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

base/abstractarray.jl

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -901,13 +901,23 @@ end
901901
typeof(function copyto! end).name.max_methods = UInt8(1)
902902

903903
function copyto!(dest::AbstractArray, src)
904-
destiter = eachindex(dest)
905-
y = iterate(destiter)
906-
for x in src
907-
y === nothing &&
904+
if haslength(src)
905+
length(dest) < length(src) &&
908906
throw(ArgumentError("destination has fewer elements than required"))
909-
dest[y[1]] = x
910-
y = iterate(destiter, y[2])
907+
I = firstindex(dest)
908+
@inbounds for x in src
909+
dest[I] = x
910+
I = nextind(dest, I)
911+
end
912+
else
913+
destiter = eachindex(dest)
914+
y = iterate(destiter)
915+
for x in src
916+
y === nothing &&
917+
throw(ArgumentError("destination has fewer elements than required"))
918+
dest[y[1]] = x
919+
y = iterate(destiter, y[2])
920+
end
911921
end
912922
return dest
913923
end

0 commit comments

Comments
 (0)