discriminated<T> static method

Codec<T> discriminated<T>({
  1. required String tag,
  2. required Map<String, Codec<T>> cases,
  3. required (String, Map<String, Object?>) encode(
    1. T
    ),
})

Discriminated union codec.

tag is the discriminator key. cases maps each tag value to a branch codec. encode maps domain values back to (tag, body).

Implementation

static Codec<T> discriminated<T>({
  required String tag,
  required Map<String, Codec<T>> cases,
  required (String, Map<String, Object?>) Function(T) encode,
}) =>
    _DiscriminatedCodec<T>(tag, cases, encode);