Also, looking at the Git history, it appears this behaviour was newly permitted as of Swift 3. In Swift 2 (based on the earlier version of that section of documentation) it was explicitly not permitted to throw a different error. In fact the docs were very clear that you could only pass up errors created elsewhere, you could not in any way create your own. You couldn't even use a do-catch block inside a rethrowing function!
A rethrowing function or method can't directly throw any errors of its own, which means it can't contain a
throwstatement. It can only propagate errors thrown by the throwing function it takes as a parameter. For example, it is not possible to call the throwing function inside ado-catchblock.
So yeah, originally it appears that rethrows truly was a "I just pass through errors untouched" marker.
Typed throws alone cannot technically express that either, as discussed earlier in this thread, although it gets closer.
It appears, from that clearly deliberate change, that there was a need for that capability. It'd be interesting to hear from the author - @Alex_Martini - as to whether they recall the reasoning for the change.
Though in any case, probably a more important gauge of its need would be to survey existing code at scale.