cached.go 384 B

12345678910111213141516171819202122232425262728
  1. package toil
  2. import (
  3. "time"
  4. )
  5. func NewCached[T any](
  6. value *T,
  7. lifetime time.Duration,
  8. ) Cached[T] {
  9. return Cached[T]{
  10. value: value,
  11. expiry: time.Now().UTC().Add(lifetime),
  12. }
  13. }
  14. type Cached[T any] struct {
  15. value *T
  16. expiry time.Time
  17. }
  18. func (c *Cached[T]) Value() *T {
  19. return c.value
  20. }
  21. func (c *Cached[T]) Expired() bool {
  22. return c.expiry.Before(time.Now().UTC())
  23. }