mirror of
https://github.com/centau/vide.git
synced 2026-08-20 23:01:37 +00:00
Add untrack()
This commit is contained in:
parent
0105e33fac
commit
6700e1b1f6
6 changed files with 107 additions and 2 deletions
|
|
@ -159,4 +159,5 @@ return table.freeze {
|
|||
capture = capture,
|
||||
capture_and_link = capture_and_link,
|
||||
create = create :: (<T>(value: T) -> (Node<T>, () -> T)) & (<T>() -> (Node<T>, () -> T)),
|
||||
refs = refs
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ local create = require(script.create)
|
|||
local source = require(script.source)
|
||||
local watch = require(script.watch)
|
||||
local cleanup, clean_garbage = require(script.cleanup)()
|
||||
local untrack = require(script.untrack)
|
||||
local derive = require(script.derive)
|
||||
local indexes, values = require(script.maps)()
|
||||
local spring, update_springs = require(script.spring)()
|
||||
|
|
@ -23,11 +24,14 @@ local vide = {
|
|||
create = create,
|
||||
source = source,
|
||||
watch = watch,
|
||||
cleanup = cleanup,
|
||||
derive = derive,
|
||||
indexes = indexes,
|
||||
values = values,
|
||||
|
||||
-- util
|
||||
cleanup = cleanup,
|
||||
untrack = untrack,
|
||||
|
||||
-- animations
|
||||
spring = spring,
|
||||
|
||||
|
|
|
|||
16
src/untrack.luau
Normal file
16
src/untrack.luau
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
if not game then script = require "test/relative-string" end
|
||||
|
||||
local graph = require(script.Parent.graph)
|
||||
type Node<T> = graph.Node<T>
|
||||
local refs = graph.refs
|
||||
|
||||
local function untrack<T>(source: () -> T): T
|
||||
local initial = #refs
|
||||
local value = source()
|
||||
for i = initial, #refs do
|
||||
refs[i] = nil
|
||||
end
|
||||
return value
|
||||
end
|
||||
|
||||
return untrack
|
||||
Loading…
Add table
Add a link
Reference in a new issue