12345678910111213141516171819202122232425 |
- package generic
- import (
- "io"
- )
- const bufSize = 4096
- // Copy ... a memory-optimized io.Copy function
- func Copy(dst io.Writer, src io.Reader) (written int64, err error) {
- // If the reader has a WriteTo method, use it to do the copy.
- // Avoids an allocation and a copy.
- if wt, ok := src.(io.WriterTo); ok {
- return wt.WriteTo(dst)
- }
- // Similarly, if the writer has a ReadFrom method, use it to do the copy.
- if rt, ok := dst.(io.ReaderFrom); ok {
- return rt.ReadFrom(src)
- }
- // fallback to standard io.CopyBuffer
- buf := make([]byte, bufSize)
- return io.CopyBuffer(dst, src, buf)
- }
|