Trait

kantan.codecs

Codec

Related Doc: package codecs

Permalink

trait Codec[E, D, F, Dec[DD] <: Decoder[E, DD, F, Dec], Enc[DD] <: Encoder[E, DD, Enc]] extends Decoder[E, D, F, Dec] with Encoder[E, D, Enc]

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.

Self Type
Codec[E, D, F, Dec, Enc] with Dec[D] with Enc[D]
Linear Supertypes
Encoder[E, D, Enc], Decoder[E, D, F, Dec], Serializable, Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Codec
  2. Encoder
  3. Decoder
  4. Serializable
  5. Serializable
  6. AnyRef
  7. Any
  1. Hide All
  2. Show all
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def copy[DD](f: (DD) ⇒ E): Enc[DD]

    Permalink

    Clones this encoder to create a new one with a different encoding function.

    Clones this encoder to create a new one with a different encoding function.

    This is not meant to be called directly. If you feel you need to, you're probably looking for contramap.

    Attributes
    protected
    Definition Classes
    Encoder
  2. abstract def copy[DD](f: (E) ⇒ Result[F, DD]): Dec[DD]

    Permalink

    Clones this decoder to create a new one with a different decoding function.

    Clones this decoder to create a new one with a different decoding function.

    This is not meant to be called directly. If you feel you need to, you're probably looking for map.

    Attributes
    protected
    Definition Classes
    Decoder
  3. 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
  4. abstract def encode(d: D): E

    Permalink

    Encodes the specified value.

    Encodes the specified value.

    Definition Classes
    Encoder

Concrete Value Members

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

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

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

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

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. def contramap[DD](f: (DD) ⇒ D): Enc[DD]

    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
  7. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  9. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  11. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  12. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  13. def map[DD](f: (D) ⇒ DD): Dec[DD]

    Permalink

    Creates a new Decoder instance that applies the specified function after decoding.

    Creates a new Decoder instance that applies the specified function after decoding.

    This is convenient when building Decoder instances: when writing a Decoder[E, D, F, R], it often happens that you already have an instance of Decoder[E, DD, F, R] and a D ⇒ DD.

    Definition Classes
    Decoder
  14. def mapResult[DD](f: (D) ⇒ Result[F, DD]): Dec[DD]

    Permalink

    Creates a new Decoder instance that applies the specified function after decoding.

    Creates a new Decoder instance that applies the specified function after decoding.

    This is similar to map, but is used for these cases when the transformation function is unsafe - you have a Decoder[String] and want to turn it into a Decoder[Int], for example.

    Definition Classes
    Decoder
  15. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  16. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  17. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  18. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  19. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  20. 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.

    Definition Classes
    Decoder
  21. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  23. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Encoder[E, D, Enc]

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

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped