From 622d80c00702684b1302d52f39065d159a96a958 Mon Sep 17 00:00:00 2001 From: Joe Tsai Date: Fri, 5 Aug 2022 12:20:50 -0700 Subject: [PATCH] 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 --- util/must/must.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 util/must/must.go diff --git a/util/must/must.go b/util/must/must.go new file mode 100644 index 000000000..e195f017d --- /dev/null +++ b/util/must/must.go @@ -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 +}