func Build(...interface{}) string {
	return "implementation not generated, run wire"
}
Build is placed in the body of an injector function template to declare the
providers to use. The Wire code generation tool will fill in an
implementation of the function. The arguments to Build are interpreted the
same as NewSet: they determine the provider set presented to Wire's
dependency graph. Build returns an error message that can be sent to a call
to panic().

The parameters of the injector function are used as inputs in the dependency
graph.

Similar to provider functions passed into NewSet, the first return value is
the output of the injector function, the optional second return value is a
cleanup function, and the optional last return value is an error. If any of
the provider functions in the injector function's provider set return errors
or cleanup functions, the corresponding return value must be present in the
injector function template.

Examples:

func injector(ctx context.Context) (*sql.DB, error) {
wire.Build(otherpkg.FooSet, myProviderFunc)
return nil, nil
}

func injector(ctx context.Context) (*sql.DB, error) {
panic(wire.Build(otherpkg.FooSet, myProviderFunc))
}
package wire
type ProviderSet struct{}
func NewSet(...interface{}) ProviderSet {
	return ProviderSet{}
}