package errors

// Capture is a wrapper function which can be used to capture errors from closing via a defer.
// An example:
//
//	func Example() (err error) {
//	    f, _ := os.Open(...)
//	    defer errors.Capture(&err, f.Close)()
//	    ...
//	    return
//
// Doing this will result in the error from the f.Close() call being
// put in the error via a ptr, if the error is not nil
func Capture(rErr *error, fn func() error) func() {
	return func() {
		err := fn()
		if *rErr == nil {
			*rErr = err
		}
	}
}
