-- | This module reexports the six necessary type classes that every 'Rule' type must support.
--   You can use this module to define new rules without depending on the @binary@, @deepseq@ and @hashable@ packages.
module Development.Shake.Classes(
    Show(..), Typeable(..), Eq(..), Hashable(..), Binary(..), NFData(..)
    ) where

-- I would probably reexport this module by default in Development.Shake,
-- but Binary defines 'get', which clashes with the State monad.

import Data.Hashable
import Data.Typeable
import Data.Binary
import Control.DeepSeq