module Control.Monad.Pool (WithResource, withResource, tryWithResource, runPooled, runDedicated) where
import qualified Control.Monad.Trans.Pool as T
import Data.Pool (Pool)
newtype WithResource r a = WithResource (T.WithResource r a)
runPooled :: WithResource r a -> Pool r -> IO a
runPooled (WithResource m) = T.runPooled m
runDedicated :: WithResource r a -> r -> IO a
runDedicated (WithResource m) = T.runDedicated m
withResource :: (r -> IO a) -> WithResource r a
withResource = WithResource . T.withResource
tryWithResource :: (r -> IO a) -> WithResource r (Maybe a)
tryWithResource = WithResource . T.tryWithResource