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  }