Swift token bucket rate limiter class

Swift
import Foundation

final class TokenBucket {
    private let capacity: Double, refillPerSecond: Double
    private var tokens: Double
    private var last = Date()

    init(capacity: Double, refillPerSecond: Double) {
        self.capacity = capacity
        self.refillPerSecond = refillPerSecond
        self.tokens = capacity
    }

    func take(_ count: Double = 1) -> Bool {
        let now = Date()
        tokens = min(capacity, tokens + now.timeIntervalSince(last) * refillPerSecond)
        last = now
        guard tokens >= count else { return false }
        tokens -= count
        return true
    }
}