Skip to content

Commit 869f85e

Browse files
committed
method for copyto!(dest, src) too
1 parent ac7e8ae commit 869f85e

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
@@ -897,13 +897,23 @@ end
897897
## from general iterable to any array
898898

899899
function copyto!(dest::AbstractArray, src)
900-
destiter = eachindex(dest)
901-
y = iterate(destiter)
902-
for x in src
903-
y === nothing &&
900+
if haslength(src)
901+
length(dest) < length(src) &&
904902
throw(ArgumentError("destination has fewer elements than required"))
905-
dest[y[1]] = x
906-
y = iterate(destiter, y[2])
903+
I = firstindex(dest)
904+
@inbounds for x in src
905+
dest[I] = x
906+
I = nextind(dest, I)
907+
end
908+
else
909+
destiter = eachindex(dest)
910+
y = iterate(destiter)
911+
for x in src
912+
y === nothing &&
913+
throw(ArgumentError("destination has fewer elements than required"))
914+
dest[y[1]] = x
915+
y = iterate(destiter, y[2])
916+
end
907917
end
908918
return dest
909919
end

0 commit comments

Comments
 (0)