From 9048506981ee943bf40e5a4d2f35e2f1a0b7b768 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Sat, 21 May 2022 13:21:02 -0500 Subject: [PATCH] Replace mutable handles in-place --- src/syndicate/actors.nim | 6 ++++++ syndicate.nimble | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/syndicate/actors.nim b/src/syndicate/actors.nim index 8cb7b45..8fcfb48 100644 --- a/src/syndicate/actors.nim +++ b/src/syndicate/actors.nim @@ -291,6 +291,12 @@ proc replace*[T](turn: var Turn; `ref`: Ref; h: Handle; v: T): Handle = result = publish(turn, `ref`, v) retract(turn, h) +proc replace*[T](turn: var Turn; `ref`: Ref; h: var Handle; v: T): Handle {.discardable.} = + var old = h + h = publish(turn, `ref`, v) + retract(turn, old) + h + proc stop*(turn: var Turn) {.gcsafe.} proc run*(facet; action: TurnAction; zombieTurn = false) {.gcsafe.} diff --git a/syndicate.nimble b/syndicate.nimble index 6d28222..af03d9f 100644 --- a/syndicate.nimble +++ b/syndicate.nimble @@ -1,6 +1,6 @@ # Package -version = "1.3.0" +version = "1.3.1" author = "Emery Hemingway" description = "Syndicated actors for conversational concurrency" license = "Unlicense"