import Foundation struct Debounce { private var timer: Timer? mutating func debouncing(_ interval: TimeInterval, action: @escaping () -> Void) { timer = Timer.scheduledTimer(withTimeInterval: interval, repeats: false) { _ in action() } } func invalidate() { timer?.invalidate() } }