"'эксепшены не нужны"
> Rust use an explicit, Either ErrorT ActualT approach to error handling, and despite being less expressive than Haskell (no HKTs, monads) it doesn't impose too much overhead. Even Go has most IO functions return an (Result, Error) pair, and in spite of that language's lack of support for abstraction, people get by okay.