From 6b2ccebad391d13e2b003b201f301afee130df39 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gwendal=20Roue=CC=81?= <gr@pierlis.com>
Date: Sat, 28 Sep 2024 10:53:29 +0200
Subject: [PATCH] AsyncValueObservation is Sendable

A Sendable async sequences plays well with apple/swift-async-algorithms
---
 GRDB/ValueObservation/ValueObservation.swift | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/GRDB/ValueObservation/ValueObservation.swift b/GRDB/ValueObservation/ValueObservation.swift
index 79eea431db..c7b2414bd3 100644
--- a/GRDB/ValueObservation/ValueObservation.swift
+++ b/GRDB/ValueObservation/ValueObservation.swift
@@ -384,11 +384,13 @@ extension ValueObservation {
 ///
 /// You build an `AsyncValueObservation` from ``ValueObservation`` or
 /// ``SharedValueObservation``.
-public struct AsyncValueObservation<Element: Sendable>: AsyncSequence {
+public struct AsyncValueObservation<Element: Sendable>: AsyncSequence, Sendable {
     public typealias BufferingPolicy = AsyncThrowingStream<Element, Error>.Continuation.BufferingPolicy
     public typealias AsyncIterator = Iterator
     
-    var bufferingPolicy: BufferingPolicy
+    // AsyncThrowingStream.Continuation.BufferingPolicy is obviously
+    // Sendable, but lacks Sendable conformance.
+    nonisolated(unsafe) var bufferingPolicy: BufferingPolicy
     var start: ValueObservationStart<Element>
     
     public func makeAsyncIterator() -> Iterator {