aboutsummaryrefslogtreecommitdiff
path: root/unsafe.go
diff options
context:
space:
mode:
Diffstat (limited to 'unsafe.go')
-rw-r--r--unsafe.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/unsafe.go b/unsafe.go
new file mode 100644
index 0000000..418a910
--- /dev/null
+++ b/unsafe.go
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: BSD-2-Clause
+// SPDX-FileCopyrightText: Copyright (c) 2025 Runxi Yu <https://runxiyu.org>
+
+package main
+
+import "unsafe"
+
+// stringToBytes converts a string to a byte slice without copying the string.
+// Memory is borrowed from the string.
+// The resulting byte slice must not be modified in any form.
+func stringToBytes(s string) (bytes []byte) {
+ return unsafe.Slice(unsafe.StringData(s), len(s))
+}
+
+// bytesToString converts a byte slice to a string without copying the bytes.
+// Memory is borrowed from the byte slice.
+// The source byte slice must not be modified.
+func bytesToString(b []byte) string {
+ return unsafe.String(&b[0], len(b))
+}