util/must: new package ()

The Do function assists in calling functions that must succeed.
It only interacts well with functions that return (T, err).
Signatures with more return arguments are not supported.

Signed-off-by: Joe Tsai <joetsai@digital-static.net>
This commit is contained in:
Joe Tsai 2022-08-05 12:20:50 -07:00 committed by GitHub
parent 486cc9393c
commit 622d80c007
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

17
util/must/must.go Normal file

@ -0,0 +1,17 @@
// Copyright (c) 2022 Tailscale Inc & AUTHORS All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Package must assists in calling functions that must succeed.
//
// Example usage:
// var target = must.Do(url.Parse(...))
package must
// Do returns v as is. It panics if err is non-nil.
func Do[T any](v T, err error) T {
if err != nil {
panic(err)
}
return v
}