distribute/codec/variant
Types
A builder for creating codecs for Gleam’s Custom Types (ADTs).
pub opaque type VariantBuilder(a)
Values
pub fn add(
builder: VariantBuilder(a),
id: Int,
name: String,
inner: codec.Codec(b),
wrap: fn(b) -> a,
unwrap: fn(a) -> Result(b, Nil),
) -> VariantBuilder(a)
Add a variant with a payload to the codec. id: unique identifier (0-255). name: for error messages. inner: codec for the payload. wrap: ADT constructor. unwrap: extract payload or return Error(Nil) if wrong variant.
pub fn build(builder: VariantBuilder(a)) -> codec.Codec(a)
Finalize the builder and return a Codec(a). Panics if duplicate IDs are found.
pub fn unit(
builder: VariantBuilder(a),
id: Int,
name: String,
value: a,
match: fn(a) -> Bool,
) -> VariantBuilder(a)
Add a variant without a payload (unit/constant).