that None was success rather than failure (analogous to 0), or
that Some would always count as a success ("it's like returning Option from a function, the Some variant always indicates success even if it is "successfully returning a result that means failure")
so it's best to require the programmer to be explicit.
The difference is that no one could assume Ok is a failure. On the other hand, people could assume that Some is a failure, given the common convention of "0 is success, other values are failures".
Hmm. I didn't know about this impl, and if it was suggested to me, I would think it was bad for the same reasons of "implicitly conflating things like Err and Ok(Err)". So it seems Rust has taken different priorities than me. Nevertheless, it still seems worse to extend it to Option, for the additional reason I mention above.
You can always call option.ok_or(... to be explicit that the None case means Err.