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