/*
	Package adverr implements errors with call stack traces
	as well as error templates for error equality

	Usage examples

	Creating templates:
		var (
			ErrDoStuffFailed = adverr.NewErrTmpl("ErrDoStuffFailed", "Could'nt do stuff because of %s")
		)

	Creating independent error (without error template):
		func doStuffWithIndependentErr() error {
			return adverr.New("Could'nt do stuff")
		}

	Creating error based on template:
		func doStuff() error {
			return ErrDoStuffFailed.New("reasons")
		}

	Printing errors on stderr convieniently:
		Print(myErr)
		Println(myErr)

	Printing errors on stderr and exit with exitcode:
		Fatal(myErr, 1)
		Fatalln(myErr, 1)

	Advantages of error templates
		two errors made by the same template will return true when called with errors.Is()

*/
package adverr