Skip to content

Commit fd5067c

Browse files
Added missing sendable conformances for throwing iterator maps
1 parent 12853aa commit fd5067c

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

Sources/AsyncSequenceReader/AsyncIteratorMapSequence.swift

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ extension AsyncSequence {
8585
/// - Parameter transform: A mapping closure. `transform` accepts an iterator representing the original sequence as its parameter and returns a transformed value. Returning `nil` will stop the sequence early, as will throwing an error.
8686
/// - Returns: An asynchronous sequence that contains, in order, elements produced by the `transform` closure.
8787
@inlinable
88-
public func iteratorMap<Transformed>(_ transform: @escaping (_ iterator: inout AsyncBufferedIterator<AsyncIterator>) async throws -> Transformed) -> AsyncThrowingIteratorMapSequence<Self, Transformed> {
88+
public func iteratorMap<Transformed>(_ transform: @Sendable @escaping (_ iterator: inout AsyncBufferedIterator<AsyncIterator>) async throws -> Transformed) -> AsyncThrowingIteratorMapSequence<Self, Transformed> {
8989
AsyncThrowingIteratorMapSequence(self, transform: transform)
9090
}
9191
}
@@ -148,17 +148,20 @@ extension AsyncIteratorMapSequence: AsyncSequence {
148148
}
149149
}
150150

151+
extension AsyncIteratorMapSequence: Sendable where Base: Sendable, Transformed: Sendable, Base.Element: Sendable, Base.AsyncIterator: Sendable {}
152+
extension AsyncIteratorMapSequence.AsyncIterator: Sendable where Base: Sendable, Base.AsyncIterator: Sendable, Transformed: Sendable, Element: Sendable, Base.Element: Sendable {}
153+
151154
public struct AsyncThrowingIteratorMapSequence<Base, Transformed> where Base : AsyncSequence {
152155
@usableFromInline
153156
let base: Base
154157

155158
@usableFromInline
156-
let transform: (_ iterator: inout AsyncBufferedIterator<Base.AsyncIterator>) async throws -> Transformed
159+
let transform: @Sendable (_ iterator: inout AsyncBufferedIterator<Base.AsyncIterator>) async throws -> Transformed
157160

158161
@usableFromInline
159162
init(
160163
_ base: Base,
161-
transform: @escaping (_ iterator: inout AsyncBufferedIterator<Base.AsyncIterator>) async throws -> Transformed
164+
transform: @Sendable @escaping (_ iterator: inout AsyncBufferedIterator<Base.AsyncIterator>) async throws -> Transformed
162165
) {
163166
self.base = base
164167
self.transform = transform
@@ -173,13 +176,16 @@ extension AsyncThrowingIteratorMapSequence: AsyncSequence {
173176
var baseIterator: AsyncBufferedIterator<Base.AsyncIterator>
174177

175178
@usableFromInline
176-
let transform: (_ iterator: inout AsyncBufferedIterator<Base.AsyncIterator>) async throws -> Transformed
179+
let transform: @Sendable (_ iterator: inout AsyncBufferedIterator<Base.AsyncIterator>) async throws -> Transformed
177180

178181
@usableFromInline
179182
var encounteredError = false
180183

181184
@usableFromInline
182-
init(_ baseIterator: AsyncBufferedIterator<Base.AsyncIterator>, transform: @escaping (inout AsyncBufferedIterator<Base.AsyncIterator>) async throws -> Transformed) {
185+
init(
186+
_ baseIterator: AsyncBufferedIterator<Base.AsyncIterator>,
187+
transform: @Sendable @escaping (inout AsyncBufferedIterator<Base.AsyncIterator>) async throws -> Transformed
188+
) {
183189
self.baseIterator = baseIterator
184190
self.transform = transform
185191
}
@@ -207,7 +213,7 @@ extension AsyncThrowingIteratorMapSequence: AsyncSequence {
207213
}
208214
}
209215

210-
extension AsyncIteratorMapSequence: Sendable where Base: Sendable, Transformed: Sendable, Base.Element: Sendable, Base.AsyncIterator: Sendable {}
211-
extension AsyncIteratorMapSequence.AsyncIterator: Sendable where Base: Sendable, Base.AsyncIterator: Sendable, Transformed: Sendable, Element: Sendable, Base.Element: Sendable {}
216+
extension AsyncThrowingIteratorMapSequence: Sendable where Base: Sendable, Transformed: Sendable, Base.Element: Sendable, Base.AsyncIterator: Sendable {}
217+
extension AsyncThrowingIteratorMapSequence.AsyncIterator: Sendable where Base: Sendable, Base.AsyncIterator: Sendable, Transformed: Sendable, Element: Sendable, Base.Element: Sendable {}
212218

213219
#endif

0 commit comments

Comments
 (0)