copy/copy.go
func computeDiffID(stream io.Reader, decompressor compression.DecompressorFunc) (digest.Digest, error) {
	if decompressor != nil {
		s, err := decompressor(stream)
		if err != nil {
			return "", err
		}
		defer s.Close()
		stream = s
	}

	return digest.Canonical.FromReader(stream)
}
func computeDiffID(stream io.Reader, decompressor compression.DecompressorFunc) (digest.Digest, error) {
	if decompressor != nil {
		s, err := decompressor(stream)
		if err != nil {
			return "", err
		}
		defer s.Close()
		stream = s
	}

	return digest.Canonical.FromReader(stream)
}
func computeDiffID ( stream io . Reader , decompressor compression . DecompressorFunc ) ( digest . Digest , error ) { if decompressor != nil { s , err := decompressor ( stream ) if err != nil { return " " , err } defer s . Close ( ) stream = s } return digest . Canonical . FromReader ( stream ) }
// computeDiffID reads all input from layerStream, uncompresses it using decompressor if necessary, and returns its digest.
computeDiffID reads all input from layerStream uncompresses it using decompressor if necessary and returns its digest .