func forEach()

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)
    }