I'd like to implement a simple {.persistence.} template macro ... but I can't even get the following hardcoded version to run without resorting to removing _history_ as a parameter (i.e. just including it as a global). While that works... it isn't particulary _re-use_ friendly :-(.
Any better suggestions for working around generated error: Error: 'history' is of type <var History> which cannot be captured as it would violate memory safety, declared here: /Users/DM/work/trunk/nim/test_persistence.nim(10, 11); using '-d:nimNoLentIterators' helps in some cases Run # Example of proc memory capture violation import flatty, # https://github.com/treeform/flatty - for actual persistence std/[exitprocs, os, times] type HistoryEntry = string History = seq[HistoryEntry] proc save(history: var History, filename: string) = writeFile(filename, history.toFlatty) proc persistence(history: var History, filename: string) = if fileExists filename: history = filename.readFile.fromFlatty History addExitProc( proc() = save(history, filename) # Error: 'history' is of type <var History> which cannot be captured as # it would violate memory safety, declared here: # /Users/DM/work/trunk/nim/test_persistence.nim(10, 11); using # '-d:nimNoLentIterators' helps in some cases ) # Example usage const historyFilename = "history.his" var history: History = @[] history.persistence historyFilename echo history # so far history.add "Another entry: " & $now() # Add another entry on each run Run