encoderFromCodec<T> function

Encoder<T> encoderFromCodec<T>(
  1. Codec<T, Object?> codec
)

Extracts an Encoder view from a Codec.

This is useful because Codec does not extend Encoder in Dart (since Dart does not support multiple inheritance of sealed classes). Many composition utilities accept an Encoder so this bridge is needed.

Implementation

Encoder<T> encoderFromCodec<T>(Codec<T, Object?> codec) {
  return switch (codec) {
    FixedSizeCodec<T, Object?>() => FixedSizeEncoder<T>(
      fixedSize: codec.fixedSize,
      write: codec.write,
    ),
    VariableSizeCodec<T, Object?>() => VariableSizeEncoder<T>(
      getSizeFromValue: codec.getSizeFromValue,
      write: codec.write,
      maxSize: codec.maxSize,
    ),
  };
}