Immutable implementation of a *T*ime *T*o *L*ive cache.
Every value placed into the cache via "put" must have an
accompanying expiration time. Alternatively, placing a (K, V) pair
into the TTLCache via putWithTime will generate an expiration time
via the supplied clock function. After the supplied time-to-live
Duration has passed, placing any new pair into the cache with
"put" will evict all expired keys.
Immutable implementation of a *T*ime *T*o *L*ive cache.
Every value placed into the cache via "put" must have an accompanying expiration time. Alternatively, placing a (K, V) pair into the TTLCache via putWithTime will generate an expiration time via the supplied clock function. After the supplied time-to-live Duration has passed, placing any new pair into the cache with "put" will evict all expired keys.