in Sources/TwitterTextEditor/Sequence.swift [44:69]
func forEach(queue: DispatchQueue,
completion: (() -> Void)? = nil,
_ body: @escaping (Element, @escaping Next) -> Void)
{
var iterator = makeIterator()
var next: Next!
let final = {
next = nil
completion?()
}
next = { action in
queue.async {
switch action {
case .continue:
if let element = iterator.next() {
body(element, next)
} else {
final()
}
case .break:
final()
}
}
}
next(.continue)
}