Funnily enough I just used Copilot to write a reasonably huge PR (it did like 95% of the work), which was indeed mostly a copy paste job (the whole library is a SIMD library with lots of similarities between the different types and operations) and Copilot made zero mistakes when it didn't suggest something completely different whereas the human copy pasted code that was already in there had tons of mistakes that I noticed as I went through the library. So interestingly when it comes to code that is mostly copy paste, but requires some subtle changes here and there (based on the type and operation, ...), Copilot is much better at it than humans.
Funnily enough the only thing you can say is that you can copy and paste more successfully with copiolot than someone else who is unnamed and possibly unknown.
The truth of it, whatever that may be will shake out.
Interesting. Isn't that a good fit for macros though? Particularly for the future maintainers sake. With macros, future maintainers will only need to tweak macro invocations or macro bodies, instead of having to do a huge copy paste job all over again
Even when I have to look up all the weird syntax for a macro_rules! macro, they take like 10 minutes, tops. If you're taking much longer than that, you're probably trying something too ambitious: it should either be proper code generation (in Rust, a build script or proc macro) or a const fn, or a trait and proper generics.
C's even easier; you just write the C code with parens around everything, then run it through cpp, then correct any divergences from the expected code. (It does take a bit longer, though, because the compiler waits until the last minute to shout at you if you make a syntax error.)
I can see complicated C++ templates taking hours, but they're not really macros. (They're probably the correct tool for this, though.)