{-# OPTIONS_GHC -Wno-orphans #-}

-- |
-- Orphan instances of "Serialize".
module Cereal.UnorderedContainers.Serialize where

import qualified Cereal.UnorderedContainers.Extras.StrictHashMap as StrictHashMap
import qualified Cereal.UnorderedContainers.Get as Get
import Cereal.UnorderedContainers.Prelude
import qualified Cereal.UnorderedContainers.Put as Put

instance (Eq key, Hashable key, Serialize key, Serialize value) => Serialize (StrictHashMap.HashMap key value) where
  put :: Putter (HashMap key value)
put = forall key value.
Putter Int
-> Putter key -> Putter value -> Putter (HashMap key value)
Put.strictHashMap forall t. Serialize t => Putter t
put forall t. Serialize t => Putter t
put forall t. Serialize t => Putter t
put
  get :: Get (HashMap key value)
get = forall key value.
(Eq key, Hashable key) =>
Get Int -> Get key -> Get value -> Get (HashMap key value)
Get.strictHashMap forall t. Serialize t => Get t
get forall t. Serialize t => Get t
get forall t. Serialize t => Get t
get