Chaining and failing on first error is only useful for the most trivial of error situations. Non toy programs handle errors with retry strategies, alternate algorithms and fallbacks which may all be contextual.
Nothing in Rust (or Go, even) ordinarily precludes the type of retry approach you're describing, of course.