package misc import ( "context" ) type Key[T any] struct { Name string } func (k *Key[T]) Wrap(ctx context.Context, value *T) context.Context { return context.WithValue(ctx, k, value) } func (k *Key[T]) Lookup(ctx context.Context) (*T, bool) { t, ok := ctx.Value(k).(*T) return t, ok } func (k *Key[T]) Value(ctx context.Context) *T { t, ok := ctx.Value(k).(*T) if !ok { panic("not value found") } return t }