From 2a020b5cef1c97763def830b7dfcef9c6cd72535 Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Tue, 22 Feb 2022 02:24:14 +0100 Subject: [PATCH] Add captureResources --- src/Quasar/Resources.hs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Quasar/Resources.hs b/src/Quasar/Resources.hs index 32c1ef1..f6d777d 100644 --- a/src/Quasar/Resources.hs +++ b/src/Quasar/Resources.hs @@ -12,6 +12,8 @@ module Quasar.Resources ( registerDisposeTransaction, disposeEventually, disposeEventually_, + captureResources, + captureResources_, -- * STM disposeEventuallySTM, @@ -96,3 +98,14 @@ disposeEventually res = ensureSTM $ disposeEventuallySTM res disposeEventually_ :: (Resource r, MonadQuasar m) => r -> m () disposeEventually_ res = ensureSTM $ disposeEventuallySTM_ res + + +captureResources :: MonadQuasar m => m a -> m (a, Disposer) +captureResources fn = do + quasar <- newQuasar + localQuasar quasar do + result <- fn + pure (result, getDisposer (quasarResourceManager quasar)) + +captureResources_ :: MonadQuasar m => m () -> m Disposer +captureResources_ fn = snd <$> captureResources fn -- GitLab