// // SnapshotPublisher.swift // punchnet // // Created by 安礼成 on 2026/2/5. // import Atomics final class SnapshotPublisher: @unchecked Sendable { private let atomic: ManagedAtomic> init(initial snapshot: S) { self.atomic = ManagedAtomic(.passRetained(snapshot)) } func publish(_ snapshot: S) { let newRef = Unmanaged.passRetained(snapshot) let oldRef = atomic.exchange(newRef, ordering: .releasing) oldRef.release() } @inline(__always) func current() -> S { atomic.load(ordering: .acquiring).takeUnretainedValue() } deinit { let ref = atomic.load(ordering: .acquiring) ref.release() } }