代数的にはEitherモナド型の一種だけど
Rustでは値付きEnumすなわちタグ付きユニオンで表現されているからね
それにより正常時返り値T型とエラー時返り値E型を包み込んでResult<T,E>型としている