FYI: The reason for this is that `copy` is a "range to output copier", whereas "put" is really a "place a into b".

In this particular case, `p` will be decoded character by character, and each character will be individually put into `r` (which will then re-encode to do that...)

`put` on the other hand, will just "see" that `r.put(p)` works, and call that, and call it a day.

To be honest, `copy` has *nothing* going for it over `put`, appart from the argument ordering being swapped, allowing UFCS.