▲ | _bent 6 hours ago | |
It's annoying, but not for the error handling. To the contrary, I think the error handling is actually improved by this pattern. If you manually convert beforehand you easily run into working with a Result<Result<T, E>, E>. What I find annoying about the pattern is that it hinders API exploration through intellisense ("okay, it seems I need a XY, how do I get one of them"), because the TryFrom (sort of) obscures all the types that would be valid. This problem isn't exclusive to Rust though, very OO APIs that only have a base class in the signature, but really expect some concrete implementation are similarly annoying. Of course you can look up "who implements X"; it's just an inconvenient extra step. And there is merit to APIs designed like this - stuff like Axum in Rust would be much more significantly more annoying to use if you had to convert everything by hand. Though often this kind of design feels like a band aid for the lack of union types in the language. | ||
▲ | phanimahesh 2 hours ago | parent | next [-] | |
The errors in the result might be different types and need different handling, so nested result might not be undesirable | ||
▲ | quotemstr 6 hours ago | parent | prev [-] | |
Why not teach rust-analyzer this pattern as an ad hoc heuristic to use when finding completions? |