Scala では複数の型のどれか一つになる列挙型を sealed trait や enum を使って定義できます. JSON には列挙型の概念が存在しないので、列挙型はさまざまな方法でシリアライズ・デシリアライズされることがあります. このような enum のシリアライズ・デシリアライズをする際に Rust の serde の ADT のシリアライズ・デシリアライはとても便利です. 実は Scala の circe でも似たようなことができるんですよ? 😊 なお、以降のコードは次の環境で実行されている. //> using scala "3.3.0" //> using dep "io.circe::circe-core:0.14.5" //> using dep "io.circe::circe-generic:0.14.5" import io.circe.* import io.c