aboutsummaryrefslogtreecommitdiff
path: root/src/string_immutable.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/string_immutable.zig')
-rw-r--r--src/string_immutable.zig10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/string_immutable.zig b/src/string_immutable.zig
index 6657dc27e..5c890b759 100644
--- a/src/string_immutable.zig
+++ b/src/string_immutable.zig
@@ -91,6 +91,14 @@ pub const StringOrTinyString = struct {
// allocator.free(slice_);
}
+ pub fn initAppendIfNeeded(stringy: string, comptime Appender: type, appendy: Appender) !StringOrTinyString {
+ if (stringy.len <= StringOrTinyString.Max) {
+ return StringOrTinyString.init(stringy);
+ }
+
+ return StringOrTinyString.init(try appendy.append(string, stringy));
+ }
+
pub fn init(stringy: string) StringOrTinyString {
switch (stringy.len) {
0 => {
@@ -102,7 +110,7 @@ pub const StringOrTinyString = struct {
.is_tiny_string = 1,
.remainder_len = @truncate(u7, stringy.len),
};
- std.mem.copy(u8, &tiny.remainder_buf, stringy);
+ @memcpy(&tiny.remainder_buf, stringy.ptr, tiny.remainder_len);
return tiny;
},
else => {