summaryrefslogtreecommitdiff
path: root/vendor/codeberg.org/gruf/go-byteutil/bytes.go
blob: 880cb4b6da7a25f563931e18345ed7e245c1a550 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package byteutil

import (
	"unsafe"
)

// Copy returns a copy of []byte.
func Copy(b []byte) []byte {
	if b == nil {
		return nil
	}
	p := make([]byte, len(b))
	copy(p, b)
	return p
}

// B2S returns a string representation of []byte without allocation.
// Since Go strings are immutable, the bytes passed to String must
// not be modified as long as the returned string value exists.
func B2S(b []byte) string {
	return unsafe.String(unsafe.SliceData(b), len(b))
}

// S2B returns a []byte representation of string without allocation.
func S2B(s string) []byte {
	return unsafe.Slice(unsafe.StringData(s), len(s))
}