Kit
Functions

getStructEncoder

Call Signature

getStructEncoder<TFields>(fields): FixedSizeEncoder<DrainOuterGeneric<{ [I in never as TFields[I][0]]: TFields[I][1] extends Encoder<TFrom> ? TFrom : never }>>

Returns an encoder for custom objects.

This encoder serializes an object by encoding its fields sequentially, using the provided field encoders.

For more details, see getStructCodec.

Type Parameters

Type ParameterDescription
TFields extends Fields<FixedSizeEncoder<any>>The fields of the struct, each paired with an encoder.

Parameters

ParameterTypeDescription
fieldsTFieldsThe name and encoder of each field.

Returns

FixedSizeEncoder<DrainOuterGeneric<{ [I in never as TFields[I][0]]: TFields[I][1] extends Encoder<TFrom> ? TFrom : never }>>

A FixedSizeEncoder or VariableSizeEncoder for encoding custom objects.

Example

Encoding a custom struct.

const encoder = getStructEncoder([
  ['name', fixCodecSize(getUtf8Encoder(), 5)],
  ['age', getU8Encoder()]
]);
 
const bytes = encoder.encode({ name: 'Alice', age: 42 });
// 0x416c6963652a
//   |         └── Age (42)
//   └── Name ("Alice")

See

getStructCodec

Call Signature

getStructEncoder<TFields>(fields): VariableSizeEncoder<DrainOuterGeneric<{ [I in never as TFields[I][0]]: TFields[I][1] extends Encoder<TFrom> ? TFrom : never }>>

Returns an encoder for custom objects.

This encoder serializes an object by encoding its fields sequentially, using the provided field encoders.

For more details, see getStructCodec.

Type Parameters

Type ParameterDescription
TFields extends Fields<Encoder<any>>The fields of the struct, each paired with an encoder.

Parameters

ParameterTypeDescription
fieldsTFieldsThe name and encoder of each field.

Returns

VariableSizeEncoder<DrainOuterGeneric<{ [I in never as TFields[I][0]]: TFields[I][1] extends Encoder<TFrom> ? TFrom : never }>>

A FixedSizeEncoder or VariableSizeEncoder for encoding custom objects.

Example

Encoding a custom struct.

const encoder = getStructEncoder([
  ['name', fixCodecSize(getUtf8Encoder(), 5)],
  ['age', getU8Encoder()]
]);
 
const bytes = encoder.encode({ name: 'Alice', age: 42 });
// 0x416c6963652a
//   |         └── Age (42)
//   └── Name ("Alice")

See

getStructCodec

On this page