Skip to content

Instantly share code, notes, and snippets.

@moyerr
Created May 18, 2023 17:25
Show Gist options
  • Save moyerr/1167a602fcc52e2b359f616b27be6dc4 to your computer and use it in GitHub Desktop.
Save moyerr/1167a602fcc52e2b359f616b27be6dc4 to your computer and use it in GitHub Desktop.
struct AsyncWrappedSequence<Base: Sequence>: AsyncSequence {
typealias Element = Base.Element
struct AsyncIterator<BaseIterator>: AsyncIteratorProtocol where BaseIterator == Base.Iterator {
var base: BaseIterator
mutating func next() async -> BaseIterator.Element? {
base.next()
}
}
let base: Base
func makeAsyncIterator() -> AsyncIterator<Base.Iterator> {
.init(base: base.makeIterator())
}
}
extension Sequence {
var async: AsyncWrappedSequence<Self> { .init(base: self) }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment