TTLPriorityLRUQueue
public class TTLPriorityLRUQueue<Key, Element> where Key : Hashable
                TTLPriorityLRUQueue: Hybrid TTL + Priority + LRU cache.
This structure stores items with a time-to-live (TTL), an eviction priority, and tracks recency for LRU ordering. Eviction proceeds in the following order: 1) Expired entries 2) Lowest priority 3) Least-recently-used within the same priority
Complexity
O(1) average for set/get/remove by key; O(k) to purge k expired entries.- Thread-safety: Not thread-safe by itself; use external synchronization if needed.
 
- 
                  
                  
The maximum number of elements the cache can hold.
Declaration
Swift
public let capacity: Int - 
                  
                  
Returns true if the cache is empty.
Declaration
Swift
public var isEmpty: Bool { get } - 
                  
                  
Returns true if the cache is full.
Declaration
Swift
public var isFull: Bool { get } - 
                  
                  
The current number of elements in the cache.
Declaration
Swift
public var count: Int { get } - 
                  
                  
Initializes a new empty cache with the specified capacity.
Declaration
Swift
public init(capacity: Int)Parameters
capacityMaximum elements allowed; negative values are treated as zero.
 - 
                  
                  
Inserts or updates an element for the given key, with optional priority and TTL.
Behavior:
- Overwrites existing keys and refreshes both TTL and LRU position
 - Chooses insertion path based on whether the earliest TTL has already expired
 
Declaration
Swift
@discardableResult func set( element: Element, for key: Key, priority: Double = .zero, expiredIn duration: TimeInterval = .infinity ) -> Element?Parameters
elementThe element to store
keyThe key to associate with the element
priorityEviction priority (higher values retained longer)
durationTTL in seconds (default: .infinity)
Return Value
The evicted element, if any
 - 
                  
                  
Retrieves the element for the given key if present and not expired.
Declaration
Swift
@discardableResult func getElement(for key: Key) -> Element?Parameters
keyThe key to look up
Return Value
The element if present and valid; otherwise nil (expired or missing)
 - 
                  
                  
Removes the element for the given key, if present.
Declaration
Swift
@discardableResult func removeElement(for key: Key) -> Element?Parameters
keyThe key to remove
Return Value
The removed element, or nil if not found
 - 
                  
                  
Removes and returns one element following expiration/priority/LRU rules.
Declaration
Swift
@discardableResult func removeElement() -> Element?Return Value
The removed element, or nil if the cache is empty
 - 
                  
                  
Removes all expired elements from the cache.
Iteratively checks the TTL heap root (earliest expiration) and removes expired entries until the root is not expired. This ensures efficient cleanup without scanning all keys.
Note
O(k) where k is the number of expired entries removed.Declaration
Swift
func removeExpiredElements() 
View on GitHub