Make root() return destructor automatically

This commit is contained in:
aaron 2024-10-06 15:37:05 +01:00
parent 8142acd1c1
commit 82eec61c45
8 changed files with 26 additions and 30 deletions

View file

@ -81,9 +81,8 @@ mount(function()
effect(function()
if toggled() then
local destroy = root(function(destroy)
local destroy = root(function()
Counter()
return destroy
end)
cleanup(destroy)
end

View file

@ -13,15 +13,13 @@ local effect = vide.effect
local count = source(0)
local destroy = root(function(destroy)
local destroy = root(function()
effect(function()
local x = count()
cleanup(function() print(x) end)
end)
cleanup(function() print "root destroyed" end)
return destroy
end)
count(1) -- prints "0"

View file

@ -43,21 +43,20 @@ local count = root(setup) -- ok since effect() was called within a stable scope
count(1) -- prints "1"
```
The scope created by `root()` can be destroyed by calling the function it passes
into the given function.
The scope created by `root()` can be destroyed.
```lua
local function setup(destroy)
local function setup()
local count = source(0)
effect(function()
print(count())
end)
return count, destroy
return count
end
local count, destroy = root(setup)
local destroy, count = root(setup)
count(1) -- prints "1"