Codec

Companion for Codec.

Companion:
class
Source:
Codec.scala
class Object
trait Matchable
class Any
Codec.type

Type members

Classlikes

Value members

Concrete methods

inline def apply[A](using c: Codec[A]): Codec[A]
def apply[A](encoder: A => Attempt[BitVector], decoder: BitVector => Attempt[DecodeResult[A]]): Codec[A]

Creates a codec from encoder and decoder functions.

Creates a codec from encoder and decoder functions.

Source:
Codec.scala
def apply[A](encoder: Encoder[A], decoder: Decoder[A]): Codec[A]

Creates a codec from an encoder and a decoder.

Creates a codec from an encoder and a decoder.

Source:
Codec.scala
inline def derived[A](using m: Of[A]): Codec[A]
def fromTuple[A <: Tuple](a: A)(using evidence$1: IsMappedBy[Codec][A]): Codec[InverseMap[A, Codec]]

Constructs a Codec[(A, B, ..., N)] from a tuple (Codec[A], Codec[B], ..., Codec[N]).

Constructs a Codec[(A, B, ..., N)] from a tuple (Codec[A], Codec[B], ..., Codec[N]).

Source:
Codec.scala
def lazily[A](codec: => Codec[A]): Codec[A]

Provides a Codec[A] that delegates to a lazily evaluated Codec[A]. Typically used to consruct codecs for recursive structures.

Provides a Codec[A] that delegates to a lazily evaluated Codec[A]. Typically used to consruct codecs for recursive structures.

Source:
Codec.scala

Inherited methods

final def choiceDecoder[A](decoders: Decoder[A]*): Decoder[A]

Creates a decoder that decodes with each of the specified decoders, returning the first successful result.

Creates a decoder that decodes with each of the specified decoders, returning the first successful result.

Inherited from:
DecoderFunctions
Source:
Decoder.scala
final def choiceEncoder[A](encoders: Encoder[A]*): Encoder[A]

Creates an encoder that encodes with each of the specified encoders, returning the first successful result.

Creates an encoder that encodes with each of the specified encoders, returning the first successful result.

Inherited from:
EncoderFunctions
Source:
Encoder.scala
final def decodeBoth[A, B](decA: Decoder[A], decB: Decoder[B])(buffer: BitVector): Attempt[DecodeResult[(A, B)]]

Decodes a tuple (A, B) by first decoding A and then using the remaining bits to decode B.

Decodes a tuple (A, B) by first decoding A and then using the remaining bits to decode B.

Inherited from:
DecoderFunctions
Source:
Decoder.scala
final def decodeBothCombine[A, B, C](decA: Decoder[A], decB: Decoder[B])(buffer: BitVector)(f: (A, B) => C): Attempt[DecodeResult[C]]

Decodes a C by first decoding A and then using the remaining bits to decode B, then applying the decoded values to the specified function to generate a C.

Decodes a C by first decoding A and then using the remaining bits to decode B, then applying the decoded values to the specified function to generate a C.

Inherited from:
DecoderFunctions
Source:
Decoder.scala
final def encode[A](a: A)(using encA: Encoder[A]): Attempt[BitVector]

Encodes the specified value using the given Encoder[A].

Encodes the specified value using the given Encoder[A].

Inherited from:
EncoderFunctions
Source:
Encoder.scala
final def encodeBoth[A, B](encA: Encoder[A], encB: Encoder[B])(a: A, b: B): Attempt[BitVector]

Encodes the specified values, one after the other, to a bit vector using the specified encoders.

Encodes the specified values, one after the other, to a bit vector using the specified encoders.

Inherited from:
EncoderFunctions
Source:
Encoder.scala

Extensions

Extensions

extension [A, B](a: Codec[A])
def ::[A, B](using DummyImplicit): Codec[(A, B)]

When called on a Codec[A] where A is not a tuple, creates a new codec that encodes/decodes a tuple of (B, A). For example,

When called on a Codec[A] where A is not a tuple, creates a new codec that encodes/decodes a tuple of (B, A). For example,

uint8 :: utf8

has type Codec[(Int, Int)].

uint8 :: utf8 }}}

Source:
Codec.scala
extension [A <: Tuple, B <: Tuple](codecA: Codec[A])
inline def ++(codecB: Codec[B]): Codec[Concat[A, B]]

Builds a Codec[A ++ B] from a Codec[A] and a Codec[B] where A and B are tuples. That is, this operator is a codec-level tuple concat operation.

Builds a Codec[A ++ B] from a Codec[A] and a Codec[B] where A and B are tuples. That is, this operator is a codec-level tuple concat operation.

Value parameters:
codecA

codec to concat

Source:
Codec.scala
extension [A <: Tuple, B](codecA: Codec[A])
inline def flatAppend(f: A => Codec[B]): Codec[Concat[A, B *: EmptyTuple]]

When called on a Codec[A] for some A <: Tuple, returns a new codec that encodes/decodes the tuple A followed by the value B, where the latter is encoded/decoded with the codec returned from applying A to f.

When called on a Codec[A] for some A <: Tuple, returns a new codec that encodes/decodes the tuple A followed by the value B, where the latter is encoded/decoded with the codec returned from applying A to f.

Source:
Codec.scala
extension [A <: Tuple](codecA: Codec[A])
inline def dropUnits: Codec[DropUnits[A]]
extension [A <: Tuple, B <: Tuple](codecA: Codec[A])
inline def flatConcat(f: A => Codec[B]): Codec[Concat[A, B]]

When called on a Codec[A] for some A <: Tuple, returns a new codec that encodes/decodes the tuple A followed by the tuple B, where the latter is encoded/decoded with the codec returned from applying A to f.

When called on a Codec[A] for some A <: Tuple, returns a new codec that encodes/decodes the tuple A followed by the tuple B, where the latter is encoded/decoded with the codec returned from applying A to f.

Source:
Codec.scala
extension [A, B <: Tuple](codecA: Codec[A])
def ::[A, B <: Tuple]: Codec[A *: B]

Builds a Codec[A *: B] from a Codec[A] and a Codec[B] where B is a tuple type. That is, this operator is a codec-level tuple prepend operation.

Builds a Codec[A *: B] from a Codec[A] and a Codec[B] where B is a tuple type. That is, this operator is a codec-level tuple prepend operation.

Value parameters:
codec

codec to prepend

Source:
Codec.scala
extension [A, B <: Tuple](codecA: Codec[A])
def flatPrepend(f: A => Codec[B]): Codec[A *: B]

Creates a new codec that encodes/decodes a tuple of A :: B given a function A => Codec[B]. This allows later parts of a tuple codec to be dependent on earlier values.

Creates a new codec that encodes/decodes a tuple of A :: B given a function A => Codec[B]. This allows later parts of a tuple codec to be dependent on earlier values.

Source:
Codec.scala
extension [A, B <: Tuple](codecB: Codec[B])
inline def :+(codecA: Codec[A]): Codec[Concat[B, A *: EmptyTuple]]

codecB :+ codecA returns a new codec that encodes/decodes the tuple B followed by an A. That is, this operator is a codec-level tuple append operation.

codecB :+ codecA returns a new codec that encodes/decodes the tuple B followed by an A. That is, this operator is a codec-level tuple append operation.

Source:
Codec.scala