Swiftのenumは、ケースごとに異なる型の値を関連付けて保持できる(関連値を持てる)。
Swiftのenumは、case success(String)やcase failure(Error)のように、ケースごとに異なる型の関連値(Associated Values)を持たせることができます。標準ライブラリのResult型もこの仕組みで実装されています。他の言語のenumより表現力が高く、switch文でパターンマッチングを行いながら関連値を取り出せるため、状態を安全に表現するのに非常に便利です。