/** Ċ Ġ* ĠThis Ġfile Ġis Ġin lined Ġfrom Ġhttps :// github . com / m ichael bull / kotlin - result Ċ Ġ*/ Ċ package Ġau . com . di us . p act . com . github . m ichael bull . result Ċ Ċ /** Ċ Ġ* Ġ[ Result ] Ġis Ġa Ġtype Ġthat Ġrepresents Ġeither Ġsuccess Ġ([ Ok ]) Ġor Ġfailure Ġ([ Err ]). Ċ Ġ* Ċ Ġ* Ġ- ĠEl m : Ġ[ Result ]( http :// package . elm - lang . org / packages / elm - lang / core / 5 . 1 . 1 / Result ) Ċ Ġ* Ġ- ĠHaskell : Ġ[ Data . Either ]( https :// h ackage . haskell . org / package / base - 4 . 1 0 . 0 . 0 / docs / Data - Either . html ) Ċ Ġ* Ġ- ĠRust : Ġ[ Result ]( https :// doc . rust - lang . org / std / result / enum . Result . html ) Ċ Ġ*/ Ċ sealed Ġclass ĠResult < out ĠV , Ġout ĠE > Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠInv okes Ġa Ġ[ function ] Ġand Ġwraps Ġit Ġin Ġa Ġ[ Result ], Ġreturning Ġan Ġ[ Err ] ĊĠĠĠĠĠĠĠĠ Ġ* Ġif Ġan Ġ[ Exception ] Ġwas Ġthrown , Ġotherwise Ġ[ Ok ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġ< V > Ġof ( function : Ġ() Ġ-> ĠV ): ĠResult < V , ĠException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOk ( function . invoke ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠErr ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġsuccessful Ġ[ Result ], Ġcontaining Ġa Ġ[ value ]. Ċ Ġ*/ Ċ data Ġclass ĠOk < out ĠV >( val Ġvalue : ĠV ) Ġ: ĠResult < V , ĠNothing >() Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġfailed Ġ[ Result ], Ġcontaining Ġan Ġ[ error ]. Ċ Ġ*/ Ċ data Ġclass ĠErr < out ĠE >( val Ġerror : ĠE ) Ġ: ĠResult < Nothing , ĠE >() Ċ Ċ /** Ċ Ġ* ĠConverts Ġa Ġnullable Ġof Ġtype Ġ[ V ] Ġto Ġa Ġ[ Result ]. ĠReturns Ġ[ Ok ] Ġif Ġthe Ġvalue Ġis Ċ Ġ* Ġnon - null , Ġotherwise Ġthe Ġsupplied Ġ[ error ]. Ċ Ġ*/ Ċ inline Ġin fix Ġfun Ġ< V , ĠE > ĠV ?. to Result Or ( error : Ġ() Ġ-> ĠE ): ĠResult < V , ĠE > Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull Ġ-> ĠErr ( error ()) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠOk ( this ) ĊĠĠĠ Ġ} Ċ } Ċ