3 ms·
https://doc.rust-lang.org/beta/std/panic/fn.recover.html https://doc.rust-lang.org/beta/std/panic/fn.recover.html looks a lot like catch to me. That the documen
by quotemstr 11y ago
https://doc.rust-lang.org/beta/std/panic/fn.recover.html https://doc.rust-lang.org/beta/std/panic/fn.recover.html looks a lot like catch to me. That the documentation suggests not using it as "catch" is merely a political statement. While it may be legal to turn panics into abort, I doubt implementations will do that, because by doing so, you'll break programs that assume that panic recovery works.
The reason Rust's standard library isn't safe against malloc failure is that propagating Error everywhere would be cumbersome; I distinctly recall rust mailing list discussions on this point.
The only reason handling allocation failure has to be difficult is that the Rust people put themselves into giving into the anti-exception people. Once you allow exceptions, allocation failure becomes as easy to address as any other kind of resource exhaustion.
The Rust designers made a serious error eschewing the only fully general and fully ergonomic error handling strategy we've found.
- dbaupp 11y agoImplementations will do that, e.g. https://github.com/rust-lang/rfcs/pull/1513 https://github.com/rust-lang/rfcs/pull/1513 .
- quotemstr 11y agoEncouraging this style of programming makes me sad.
- kibwen 11y agoThis isn't a style of programming, it's a compiler flag for end-users. There's a reason that GCC and Clang have the -fno-exceptions flag.
- quotemstr 11y agoThe -fno-exceptions flag also makes me sad, because it encourages people to write libraries that are worse than they could be purely for the sake of interacting with code that chooses not to use an important feature of the language. Exception support should not be optional.
- kibwen 11y ago> the Rust people put themselves into giving into the > anti-exception people It's a shame that you characterize design decisions as "giving into" the crowd instead of trying to understand why the decision might make sense in the context of Rust. Designing the error handling story was a discussion that spanned years, with dozens of discussions, many implementations, and likely hundreds of participants. > That the documentation suggests not using it as "catch" > is merely a political statement It's not just political, note the "RecoverSafe" bound on the type parameter. See https://doc.rust-lang.org/nightly/std/panic/trait.RecoverSafe.html https://doc.rust-lang.org/nightly/std/panic/trait.RecoverSaf...