diff --git a/context.go b/context.go index f9489a77..3dc89a4c 100644 --- a/context.go +++ b/context.go @@ -265,6 +265,20 @@ func (c *Context) Get(key string) (value any, exists bool) { return } +// GetAs returns the value for the given key, ie: (value, true). +// If the value does not exist it returns (nil, false) +func (c *Context) GetAs[T any](key string) (result T, exists bool) { + c.mu.RLock() + value, exists := c.Keys[key] + c.mu.RUnlock() + + if !exists { + return + } + result, exists = value.(T) + return +} + // MustGet returns the value for the given key if it exists, otherwise it panics. func (c *Context) MustGet(key string) any { if value, exists := c.Get(key); exists {