github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/core/general/core_values/ref/ref.go (about) 1 package ref 2 3 import "errors" 4 5 // Ref is a pointer that can't be nil 6 type Ref[T any] struct { 7 pointer *T 8 } 9 10 func (r Ref[T]) Value() T { 11 return *r.pointer 12 } 13 14 func NewRef[T any](pointer *T) (Ref[T], error) { 15 if pointer == nil { 16 return Ref[T]{}, errors.New("references can't be created from a nil pointer") 17 } 18 return Ref[T]{pointer: pointer}, nil 19 }