DiscriminatedBuilder[D: (Equatable[D] val & Stringable val), Msg: Any val]¶
Builder for constructing a Discriminated codec.
Register each variant with case_of, providing the discriminator value,
a codec for the variant type, and a narrowing function that casts from
Msg to the variant. Duplicate discriminators are ignored (first
registration wins). Call build() to produce the Discriminated codec.
Constructors¶
create¶
Parameters¶
- disc_codec: Codec[D] val
Returns¶
- DiscriminatedBuilder[D, Msg] ref^
Public Functions¶
case_of[V: Msg]¶
Register a variant with its discriminator, codec, and narrowing function.
fun ref case_of[V: Msg](
disc: D,
codec: Codec[V] val,
narrow: {(Msg): V ?}[D, Msg, V] val)
: DiscriminatedBuilder[D, Msg] ref
Parameters¶
- disc: D
- codec: Codec[V] val
- narrow: {(Msg): V ?}[D, Msg, V] val
Returns¶
- DiscriminatedBuilder[D, Msg] ref
build¶
Returns¶
- Discriminated[D, Msg] val