func copyRouteConf(r routeConf) routeConf {
	c := r
	if r.regexp.path != nil {
		c.regexp.path = copyRouteRegexp(r.regexp.path)
	}
	if r.regexp.host != nil {
		c.regexp.host = copyRouteRegexp(r.regexp.host)
	}
	c.regexp.queries = make([]*routeRegexp, 0, len(r.regexp.queries))
	for _, q := range r.regexp.queries {
		c.regexp.queries = append(c.regexp.queries, copyRouteRegexp(q))
	}
	c.matchers = make([]matcher, 0, len(r.matchers))
	for _, m := range r.matchers {
		c.matchers = append(c.matchers, m)
	}
	return c
}
returns an effective deep copy of `routeConf`
package mux
import (
	"errors"
	"fmt"
	"net/http"
	"path"
	"regexp"
)
var (
	ErrMethodMismatch = errors.New("method is not allowed")
	ErrNotFound = errors.New("no matching route was found")
)
func NewRouter() *Router {
	return &Router{namedRoutes: make(map[string]*Route)}
}
type Router struct {
	NotFoundHandler http.Handler
	MethodNotAllowedHandler http.Handler
	routes []*Route
	namedRoutes map[string]*Route
	KeepContext bool
	middlewares []middleware
	routeConf
}
type routeConf struct {
	useEncodedPath bool
	strictSlash bool
	skipClean bool
	regexp routeRegexpGroup
	matchers []matcher
	buildScheme string
	buildVarsFunc BuildVarsFunc
}