I replied with the following to someone else that posted the same basic thing, so I'll just apply copy semantics again here ;).
So my point would again be… to what end?
You’re written a function that mutates a value and forces a copy… which would already happen for you if you mutated a variable with Swift’s copy-on-write semantics. In both cases, you now have your own locally mutated copy of the user.
From my perspective, you’ve simply written more code to get to the same exact place.
You might find the comments on this Swift Evolution thread to be of interest…
https://forums.swift.org/t/prepitch-implementing-the-buildable-pattern-for-structs/21282/8