util/must: new package (#5307)

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
View 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
}