Aha, teď už chápu o co Vám jde.
Část toho je vlastně Return early styl (třeba tady https://medium.com/swlh/return-early-pattern-3d18a41bba8).
A dál je to rozšířené na to, aby to bylo vizuálně jednotné a ve sloupcích. To by v Rustu šlo (tuply vracet umí), ale asi ne s pomocí Result.
Asi už chápu i jednu Calculonovu poznámku ohledně bolerplate, protože předpokládám, že myslel něco jako:
let happy = match func() { Err(IOError(e)) => { ... } Err(NetworkError(e)) => { ... } Ok(v) => v // boilerplate } happy.do_something_happy()
Ale možná že ekvivalentem v Rustu je něco jako:
let f = fce().or_else(|err| match err { IOError(e) => { Ok(fallback_value) } NetworkError(e) => { Err(FatalError(e)) } })? // otazník umožní skončit na fatální chybě // nebo pokračovat s fallbackem happy(f)
Takový kód dodrží pravidla pro odsazení errorů, neodsazení happy path a je tam minimum boilerplate. Místo if f, err = ...;err != nil {
je .or_else(|err| )?
což není moc rozdíl.