code: func (u *URL) String() string {
  	if u.url == nil {
  		u.url = &url.URL{}
  	}
  
  	scheme := u.Scheme
  	if scheme == "" {
  		scheme = "file"
  	}
  	u.url.Scheme = fmt.Sprintf(
  		"%s-%s-%s+%s",
  		u.Crypto,
  		u.RCS,
  		u.Storage,
  		scheme,
  	)
  	if !strings.HasPrefix(u.Path, "/") && filepath.IsAbs(u.Path) {
  		u.url.Path = "/" + u.Path
  	} else {
  		u.url.Path = u.Path
  	}
  	if u.Username != "" {
  		u.url.User = url.UserPassword(u.Username, u.Password)
  	}
  	if u.Host != "" {
  		u.url.Host = u.Host
  		if u.Port != "" {
  			u.url.Host += ":" + u.Port
  		}
  	}
  	u.url.RawQuery = u.Query.Encode()
  	return u.url.String()
  }
docs: // String implements fmt.Stringer