Skip to content

Commit 954774c

Browse files
committed
method for copyto!(dest, src) too
1 parent 13e2c7f commit 954774c

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
@@ -891,13 +891,23 @@ end
891891
## from general iterable to any array
892892

893893
function copyto!(dest::AbstractArray, src)
894-
destiter = eachindex(dest)
895-
y = iterate(destiter)
896-
for x in src
897-
y === nothing &&
894+
if haslength(src)
895+
length(dest) < length(src) &&
898896
throw(ArgumentError("destination has fewer elements than required"))
899-
dest[y[1]] = x
900-
y = iterate(destiter, y[2])
897+
I = firstindex(dest)
898+
@inbounds for x in src
899+
dest[I] = x
900+
I = nextind(dest, I)
901+
end
902+
else
903+
destiter = eachindex(dest)
904+
y = iterate(destiter)
905+
for x in src
906+
y === nothing &&
907+
throw(ArgumentError("destination has fewer elements than required"))
908+
dest[y[1]] = x
909+
y = iterate(destiter, y[2])
910+
end
901911
end
902912
return dest
903913
end

0 commit comments

Comments
 (0)