I believe the opposite of what you are saying is the case.
I think that return Err(..) together with return Ok(..) in fact obscures the uhappy path! With fail expr and return expr, I think any unhappy path is quite clearly and distinctly marked as “other” syntactically.
It also becomes easier for a syntax highlighter to render the keyword fail differently (with a different color, an underline, etc.) than return. While you could do this with a sufficiently smart editor plugin for return Ok(..), it becomes highly contextual when you have more error carrier types (some sort of specialized Result for example).
I could see that you want that in some cases, but often, especially with network code, you deal with unhappiness by logging with a specific message, or throwing a specific enum variant, but it is not super interesting what exactly the message is.
I want to reiterate however that fail expr highlights, in my view, better than return Err(..) does, and does so generically for all R: Try types.