package toil import ( "time" ) func NewCached[T any]( value *T, lifetime time.Duration, ) Cached[T] { return Cached[T]{ value: value, expiry: time.Now().UTC().Add(lifetime), } } type Cached[T any] struct { value *T expiry time.Time } func (c *Cached[T]) Value() *T { return c.value } func (c *Cached[T]) Expired() bool { return c.expiry.Before(time.Now().UTC()) }