| ▲ | rendaw 2 days ago |
| That prevents other control flow mechanisms (return, break) from operating past the function boundary. In general, I avoid single-callsite functions as much as possible (including the iterator api) for this reason. |
|
| ▲ | ahartmetz 2 days ago | parent [-] |
| It sounds like you're fighting the language - Rust is sort of FP-light and you're encouraged to return a null/error value from the intermediate calculation instead of doing an early return from the outer scope. It's a nice and easy to follow way to structure the code IME. Yes, it's more verbose when an early return would have been just right - so be it. |
| |
| ▲ | dzaima 2 days ago | parent [-] | | For the case where `try` is useful over the functional form (i.e. parent's situation of having a desired Result, plus some unrelated early-returning), that ends up with nested `Result`s though, i.e. spamming an `Ok(Ok(x))` on all the non-erroring cases, which gets ugly fast. | | |
| ▲ | skribanto 2 days ago | parent [-] | | Why couldnt you flatten it? | | |
| ▲ | dzaima 13 hours ago | parent [-] | | You have three different value cases (main value, main Err case for `?` to consume, and whatever early-return case). And the `?` operator fully taking up the Err result case means your main-result+early-return values strictly must both be wrapped in an Ok. |
|
|
|