func (c *Cookie) AppendBytes(dst []byte) []byte {
	if len(c.key) > 0 {
		dst = append(dst, c.key...)
		dst = append(dst, '=')
	}
	dst = append(dst, c.value...)
	if !c.expire.IsZero() {
		c.bufKV.value = AppendHTTPDate(c.bufKV.value[:0], c.expire)
		dst = append(dst, ';', ' ')
		dst = append(dst, strCookieExpires...)
		dst = append(dst, '=')
		dst = append(dst, c.bufKV.value...)
	}
	if len(c.domain) > 0 {
		dst = appendCookiePart(dst, strCookieDomain, c.domain)
	}
	if len(c.path) > 0 {
		dst = appendCookiePart(dst, strCookiePath, c.path)
	}
	if c.httpOnly {
		dst = append(dst, ';', ' ')
		dst = append(dst, strCookieHTTPOnly...)
	}
	if c.secure {
		dst = append(dst, ';', ' ')
		dst = append(dst, strCookieSecure...)
	}
	return dst
}
AppendBytes appends cookie representation to dst and returns
the extended dst.
package fasthttp
import (
	"bytes"
	"errors"
	"io"
	"sync"
	"time"
)
var zeroTime time.Time
var (
	CookieExpireDelete = time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
	CookieExpireUnlimited = zeroTime
)
func AcquireCookie() *Cookie {
	return cookiePool.Get().(*Cookie)
}
func ReleaseCookie(c *Cookie) {
	c.Reset()
	cookiePool.Put(c)
}
var cookiePool = &sync.Pool{
	New: func() interface{} {
		return &Cookie{}
	},
}
type Cookie struct {
	noCopy noCopy
	key    []byte
	value  []byte
	expire time.Time
	domain []byte
	path   []byte
	httpOnly bool
	secure   bool
	bufKV argsKV
	buf   []byte
}
func (c *Cookie) CopyTo(src *Cookie) {
	c.Reset()
	c.key = append(c.key[:0], src.key...)
	c.value = append(c.value[:0], src.value...)
	c.expire = src.expire
	c.domain = append(c.domain[:0], src.domain...)
	c.path = append(c.path[:0], src.path...)
	c.httpOnly = src.httpOnly
	c.secure = src.secure
}
func (c *Cookie) HTTPOnly() bool {
	return c.httpOnly
}
func (c *Cookie) SetHTTPOnly(httpOnly bool) {
	c.httpOnly = httpOnly
}
func (c *Cookie) Secure() bool {
	return c.secure
}
func (c *Cookie) SetSecure(secure bool) {
	c.secure = secure
}
func (c *Cookie) Path() []byte {
	return c.path
}
func (c *Cookie) SetPath(path string) {
	c.buf = append(c.buf[:0], path...)
	c.path = normalizePath(c.path, c.buf)
}
func (c *Cookie) SetPathBytes(path []byte) {
	c.buf = append(c.buf[:0], path...)
	c.path = normalizePath(c.path, c.buf)
}
func (c *Cookie) Domain() []byte {
	return c.domain
}
func (c *Cookie) SetDomain(domain string) {
	c.domain = append(c.domain[:0], domain...)
}
func (c *Cookie) SetDomainBytes(domain []byte) {
	c.domain = append(c.domain[:0], domain...)
}
func (c *Cookie) Expire() time.Time {
	expire := c.expire
	if expire.IsZero() {
		expire = CookieExpireUnlimited
	}
	return expire
}
func (c *Cookie) SetExpire(expire time.Time) {
	c.expire = expire
}
func (c *Cookie) Value() []byte {
	return c.value
}
func (c *Cookie) SetValue(value string) {
	c.value = append(c.value[:0], value...)
}
func (c *Cookie) SetValueBytes(value []byte) {
	c.value = append(c.value[:0], value...)
}
func (c *Cookie) Key() []byte {
	return c.key
}
func (c *Cookie) SetKey(key string) {
	c.key = append(c.key[:0], key...)
}
func (c *Cookie) SetKeyBytes(key []byte) {
	c.key = append(c.key[:0], key...)
}
func (c *Cookie) Reset() {
	c.key = c.key[:0]
	c.value = c.value[:0]
	c.expire = zeroTime
	c.domain = c.domain[:0]
	c.path = c.path[:0]
	c.httpOnly = false
	c.secure = false
}