1
0
Fork 0
mirror of https://github.com/diamondburned/arikawa.git synced 2024-11-01 12:34:28 +00:00
arikawa/utils/json/option/option.go

21 lines
693 B
Go
Raw Normal View History

2020-05-11 01:14:46 +00:00
// Package option provides the ability to create omittable primitives.
2020-05-13 00:09:43 +00:00
// This is accomplished by pointerrizing common primitive types so that they may
// assume a nil value, which is considered as omitted by encoding/json.
// To generate pointerrized primitives, there are helper functions NewT() for
// each option type.
2020-05-11 01:14:46 +00:00
package option
// Optional wraps a type to make it omittable.
type Optional[T any] *T
// Some creates a new Optional with the value of the passed type.
func Some[T any](v T) Optional[T] {
return &v
}
// PtrTo creates a pointer to the passed value.
// It is like [Some], except it returns *T directly rather than Optional[T].
func PtrTo[T any](v T) *T {
return &v
}