nil receiver

master
Charles Iliya Krempeaux 2023-11-06 09:22:54 -08:00
parent ac10a7a79c
commit 6b4ca5231f
1 changed files with 6 additions and 0 deletions

View File

@ -6,11 +6,17 @@ import (
"sourcecode.social/reiver/go-erorr"
)
const errNilReceiver = erorr.Error("opt: nil receiver")
var _ json.Unmarshaler = new(Optional[bool])
var _ json.Unmarshaler = new(Optional[string])
// UnmarshalJSON makes it so json.Unmarshaler is implemented.
func (receiver *Optional[T]) UnmarshalJSON(data []byte) error {
if nil == receiver {
return errNilReceiver
}
switch interface{}(&receiver.value).(type) {
case *bool, *string, json.Unmarshaler:
// these are OK.