func (c Config) Copy() *Config {
	dst := c
	return &dst
}
Copy will return a shallow copy of the Config object.
package aws
import (
	"net/http"
	"time"
	"github.com/aws/aws-sdk-go/aws/credentials"
)
const DefaultRetries = -1
type Config struct {
	Credentials *credentials.Credentials
	Endpoint *string
	Region *string
	DisableSSL *bool
	HTTPClient *http.Client
	LogLevel *LogLevelType
	Logger Logger
	MaxRetries *int
	DisableParamValidation *bool
	DisableComputeChecksums *bool
	S3ForcePathStyle *bool
	SleepDelay func(time.Duration)
}
func NewConfig() *Config {
	return &Config{}
}
func (c *Config) WithCredentials(creds *credentials.Credentials) *Config {
	c.Credentials = creds
	return c
}
func (c *Config) WithEndpoint(endpoint string) *Config {
	c.Endpoint = &endpoint
	return c
}
func (c *Config) WithRegion(region string) *Config {
	c.Region = &region
	return c
}
func (c *Config) WithDisableSSL(disable bool) *Config {
	c.DisableSSL = &disable
	return c
}
func (c *Config) WithHTTPClient(client *http.Client) *Config {
	c.HTTPClient = client
	return c
}
func (c *Config) WithMaxRetries(max int) *Config {
	c.MaxRetries = &max
	return c
}
func (c *Config) WithDisableParamValidation(disable bool) *Config {
	c.DisableParamValidation = &disable
	return c
}
func (c *Config) WithDisableComputeChecksums(disable bool) *Config {
	c.DisableComputeChecksums = &disable
	return c
}
func (c *Config) WithLogLevel(level LogLevelType) *Config {
	c.LogLevel = &level
	return c
}
func (c *Config) WithLogger(logger Logger) *Config {
	c.Logger = logger
	return c
}
func (c *Config) WithS3ForcePathStyle(force bool) *Config {
	c.S3ForcePathStyle = &force
	return c
}
func (c *Config) WithSleepDelay(fn func(time.Duration)) *Config {
	c.SleepDelay = fn
	return c
}
func (c Config) Merge(other *Config) *Config {
	if other == nil {
		return &c
	}
	dst := c
	if other.Credentials != nil {
		dst.Credentials = other.Credentials
	}
	if other.Endpoint != nil {
		dst.Endpoint = other.Endpoint
	}
	if other.Region != nil {
		dst.Region = other.Region
	}
	if other.DisableSSL != nil {
		dst.DisableSSL = other.DisableSSL
	}
	if other.HTTPClient != nil {
		dst.HTTPClient = other.HTTPClient
	}
	if other.LogLevel != nil {
		dst.LogLevel = other.LogLevel
	}
	if other.Logger != nil {
		dst.Logger = other.Logger
	}
	if other.MaxRetries != nil {
		dst.MaxRetries = other.MaxRetries
	}
	if other.DisableParamValidation != nil {
		dst.DisableParamValidation = other.DisableParamValidation
	}
	if other.DisableComputeChecksums != nil {
		dst.DisableComputeChecksums = other.DisableComputeChecksums
	}
	if other.S3ForcePathStyle != nil {
		dst.S3ForcePathStyle = other.S3ForcePathStyle
	}
	if other.SleepDelay != nil {
		dst.SleepDelay = other.SleepDelay
	}
	return &dst
}