binary-generic-combinators-0.4.4.0: Combinators and utilities to make Generic-based deriving of Binary easier and more expressive
Safe HaskellSafe
LanguageHaskell2010

Data.Binary.DerivingVia

Description

This module defines some types to be used with DerivingVia when deriving Binary instances.

Synopsis

Documentation

newtype Alternatively a Source #

Try to deserialize each constructor of a in order.

For sum types, stock Binary writes (and expects to read) an integer denoting the index of the constructor. This isn't always what's needed. In the following example, the constructor is uniquely identified by the marker byte, and its index in the Haskell ADT is irrelevant:

data JfifSegment
  = App0Segment (MatchByte "app0 segment" 0xe0, JfifApp0)
  | DqtSegment  (MatchByte "dqt segment"  0xdb, QuantTable)
  | SofSegment  (MatchByte "sof segment"  0xc0, SofInfo)
  | DhtSegment  (MatchByte "dht segment"  0xc4, HuffmanTable)
  | DriSegment  (MatchByte "dri segment"  0xdd, RestartInterval)
  | SosSegment  (MatchByte "sos segment"  0xda, SosImage)
  | UnknownSegment RawSegment
  deriving Generic
  deriving Binary via Alternatively JfifSegment

Constructors

Alternatively 

Fields

Instances

Instances details
(Generic a, GAltBinary (Rep a)) => Binary (Alternatively a) Source # 
Instance details

Defined in Data.Binary.DerivingVia