GoToSocial/vendor/codeberg.org/gruf/go-byteutil/bytes.go
kim 58af95a1d5
[chore] bump go-byteutil v1.2.0 -> v1.3.0 (#3356)
* bump go-byteutil v1.2.0 -> v1.3.0 which has safer (as in long-term API consistency) byte <-> string conversions

* fix test relying on byteutil exported type no longer existing
2024-09-26 19:50:08 +00:00

28 lines
618 B
Go

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))
}