Trait/Object

kantan.codecs

Codec

Related Docs: object Codec | package codecs

Permalink

trait Codec[E, D, F, T] extends Decoder[E, D, F, T] with Encoder[E, D, T]

Combines a Decoder and an Encoder.

Codecs are only meant as a convenience, and should not be considered more powerful or desirable than encoders or decoders. Some types can be both encoded to and decoded from, and being able to define both instances in one call is convenient. It's however very poor practice to request a type to have a Codec instance - a much preferred alternative would be to require it to have a Decoder and an Encoder instance, which a Codec would fulfill.

Linear Supertypes
Encoder[E, D, T], Decoder[E, D, F, T], Serializable, Serializable, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Codec
  2. Encoder
  3. Decoder
  4. Serializable
  5. Serializable
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def decode(e: E): Result[F, D]

    Permalink

    Decodes encoded data.

    Decodes encoded data.

    This method is safe, in that it won't throw for run-of-the-mill errors. Unrecoverable errors such as out of memory exceptions are still thrown, but that's considered valid exceptional cases, where incorrectly encoded data is just... normal.

    Callers that wish to fail fast and fail hard can use the unsafeDecode method instead.

    Definition Classes
    Decoder
  2. abstract def encode(d: D): E

    Permalink

    Encodes the specified value.

    Encodes the specified value.

    Definition Classes
    Encoder
  3. abstract def getClass(): Class[_]

    Permalink
    Definition Classes
    Any

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def contramap[DD](f: (DD) ⇒ D): Encoder[E, DD, T]

    Permalink

    Creates a new Encoder instances that applies the specified function before encoding.

    Creates a new Encoder instances that applies the specified function before encoding.

    This is a convenient way of creating Encoder instances: if you already have an Encoder[E, D, R], need to write an Encoder[E, DD, R] and know how to turn a DD into a D, you need but call contramap.

    Definition Classes
    Encoder
  6. def contramapEncoded[EE](f: (EE) ⇒ E): Decoder[EE, D, F, T]

    Permalink

    Creates a new Decoder instance by transforming encoded values with the specified function.

    Creates a new Decoder instance by transforming encoded values with the specified function.

    Definition Classes
    Decoder
  7. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    Any
  8. def hashCode(): Int

    Permalink
    Definition Classes
    Any
  9. def imap[DD](f: (D) ⇒ DD)(g: (DD) ⇒ D): Codec[E, DD, F, T]

    Permalink
  10. def imapEncoded[EE](f: (E) ⇒ EE)(g: (EE) ⇒ E): Codec[EE, D, F, T]

    Permalink
  11. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  12. def map[DD](f: (D) ⇒ DD): Decoder[E, DD, F, T]

    Permalink

    Creates a new Decoder instance by transforming successful results with the specified function.

    Creates a new Decoder instance by transforming successful results with the specified function.

    This differs from mapResult in that the transformation function cannot fail.

    Definition Classes
    Decoder
  13. def mapEncoded[EE](f: (E) ⇒ EE): Encoder[EE, D, T]

    Permalink
    Definition Classes
    Encoder
  14. def mapError[FF](f: (F) ⇒ FF): Codec[E, D, FF, T]

    Permalink

    Creates a new Decoder instance by transforming errors with the specified function.

    Creates a new Decoder instance by transforming errors with the specified function.

    Definition Classes
    CodecDecoder
  15. def mapResult[DD](f: (D) ⇒ Result[F, DD]): Decoder[E, DD, F, T]

    Permalink

    Creates a new Decoder instance by transforming successful results with the specified function.

    Creates a new Decoder instance by transforming successful results with the specified function.

    This differs from map in that it allows the transformation function to fail.

    Definition Classes
    Decoder
  16. def tag[TT]: Codec[E, D, F, TT]

    Permalink

    Changes the type with which the decoder is tagged.

    Changes the type with which the decoder is tagged.

    This makes it possible to share similar decoders across various libraries. Extracting values from strings, for example, is a common task for which the default implementation can be shared rather than copy / pasted.

    Definition Classes
    CodecEncoderDecoder
  17. def toString(): String

    Permalink
    Definition Classes
    Any
  18. def unsafeDecode(e: E): D

    Permalink

    Decodes encoded data unsafely.

    Decodes encoded data unsafely.

    The main difference between this and decode is that the former throws exceptions when errors occur where the later safely encodes error conditions in its return type.

    decode should almost always be preferred, but this can be useful for code where crashing is an acceptable reaction to failure.

    Definition Classes
    Decoder

Inherited from Encoder[E, D, T]

Inherited from Decoder[E, D, F, T]

Inherited from Serializable

Inherited from Serializable

Inherited from Any

Ungrouped