32 lines
982 B
Go
32 lines
982 B
Go
package other
|
|
|
|
import "fmt"
|
|
|
|
// OutputIntoChannel takes a singular return value and sends it into the target channel.
|
|
// This is a wrapper for functions where a value can't be collected from directly.
|
|
// Example: goroutines
|
|
func OutputIntoChannel[T any](out T, target chan T) {
|
|
target <- out
|
|
}
|
|
|
|
// Must is a quick wrapper to ensure that a function exits without error.
|
|
// If err is not nil, it panics. Otherwise val is returned.
|
|
// The intended use is something like Must(someFunc()), where someFunc
|
|
// has the signature someFunc() (T, error), with T being whatever type needed
|
|
func Must[T any](val T, err error) T {
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return val
|
|
}
|
|
|
|
// IntoPointer returns a pointer to the given value
|
|
func IntoPointer[T any](val T) *T {
|
|
return &val
|
|
}
|
|
|
|
// Error formats error messages to follow a common convention of
|
|
// "source: message: wrapped error"
|
|
func Error(source, message string, err error) error {
|
|
return fmt.Errorf("%s: %s: %w", source, message, err)
|
|
}
|