module Control.Concurrent.Chan.Class where import Control.Monad.IO.Unlift import qualified UnliftIO.Chan as Chan class ChanDup chan where dupChan :: MonadIO m => chan a -> m (chan a) instance ChanDup Chan.Chan where dupChan = Chan.dupChan {-# INLINE dupChan #-} class ChanWrite chan where writeChan :: MonadIO m => chan a -> a -> m () writeList2Chan :: MonadIO m => chan a -> [a] -> m () instance ChanWrite Chan.Chan where writeChan = Chan.writeChan {-# INLINE writeChan #-} writeList2Chan = Chan.writeList2Chan {-# INLINE writeList2Chan #-} class ChanRead chan where readChan :: MonadIO m => chan a -> m a instance ChanRead Chan.Chan where readChan = Chan.readChan {-# INLINE readChan #-}