diff --git a/build.zig.zon b/build.zig.zon index 82656de..f6d2a93 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -10,7 +10,7 @@ // This is a [Semantic Version](https://semver.org/). // In a future version of Zig it will be used for package deduplication. - .version = "0.0.2", + .version = "0.0.1", // Together with name, this represents a globally unique package // identifier. This field is generated by the Zig toolchain when the diff --git a/src/root.zig b/src/root.zig index e294c2c..0e0985a 100644 --- a/src/root.zig +++ b/src/root.zig @@ -1,7 +1,5 @@ const std = @import("std"); -const AllocError = std.mem.Allocator.Error; - pub const SmolStr = struct { pub const max_inline_len: usize = 22; @@ -15,7 +13,7 @@ pub const SmolStr = struct { inner: Inner, - pub fn init(alloc: std.mem.Allocator, s: []const u8) AllocError!SmolStr { + pub fn init(alloc: std.mem.Allocator, s: []const u8) !SmolStr { if (s.len <= max_inline_len) { return initInline(s); } @@ -75,13 +73,6 @@ pub const SmolStr = struct { } } - pub fn dupe(self: SmolStr, alloc: std.mem.Allocator) AllocError!SmolStr { - switch (self.inner) { - .inl => return self, // dupe inlined string by direct copy - .heap => |s| return try SmolStr.init(alloc, s), - } - } - pub fn format(self: SmolStr, comptime fmt: []const u8, options: std.fmt.FormatOptions, writer: anytype) !void { _ = fmt; _ = options; diff --git a/tests/root.zig b/tests/root.zig index b044c4d..ae01fd4 100644 --- a/tests/root.zig +++ b/tests/root.zig @@ -36,35 +36,3 @@ test "heap" { try std.testing.expectEqual(s.len, str.len()); try std.testing.expectEqualStrings(s, str.str()); } - -test "dupe inline" { - const alloc = std.testing.allocator; - - { - const s = "abcd"; - - const str1 = try SmolStr.init(alloc, s); - defer str1.deinit(alloc); - - const str2 = try str1.dupe(alloc); - defer str2.deinit(alloc); - - try std.testing.expectEqualSlices(u8, std.mem.asBytes(&str1), std.mem.asBytes(&str2)); - } - - { - const s = "abcdefghijklmnopqrstuvwxyz"; - - const str1 = try SmolStr.init(alloc, s); - defer str1.deinit(alloc); - - const str2 = try str1.dupe(alloc); - defer str2.deinit(alloc); - - // try std.testing.expectEqualSlices(u8, std.mem.asBytes(&str1), std.mem.asBytes(&str2)); - - try std.testing.expectEqualStrings(str1.str(), str2.str()); - - try std.testing.expect(str1.inner.heap.ptr != str2.inner.heap.ptr); - } -}