Checked exceptions probably act more like ad-hoc enums since you've got to handle each kind of exception that can be thrown, but I'm sure that could be encoded in nested results too.
Re:Announcing Rust 1.13
by yazaddaruvala on Thursday November 10, 2016 @08:08PM
(#12926441)
Fair enough, CheckedExceptions are almost always "fat pointers". Meaning they are all the same size, and can be passed around equivalently.
The Rust equivalent would be something like:
`Result<_, Box<Error>>`
Amen, they have the same expressive power.
The thing is that exceptions do not require the manual CPS transform required to handle Result objects, which results in nicer code.
Even with syntactic sugar like do notation, the syntax is still different from 'normal' code.
Also the escape hatch to unchecked exceptions is convenient too (then again Rust has some form of it already).
The trick is "Exceptions" are more than just "Checked Exceptions"