From 119ac13eda7fe95b6c1139b4bd20e05928abe427 Mon Sep 17 00:00:00 2001 From: daurnimator Date: Fri, 7 Feb 2020 14:17:40 +1100 Subject: std: add .startsWith and .endsWith to std.ArrayList --- lib/std/array_list.zig | 11 +++++++++++ lib/std/buffer.zig | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'lib/std') diff --git a/lib/std/array_list.zig b/lib/std/array_list.zig index d1946be02a..33a1220f9d 100644 --- a/lib/std/array_list.zig +++ b/lib/std/array_list.zig @@ -248,6 +248,17 @@ pub fn AlignedArrayList(comptime T: type, comptime alignment: ?u29) type { if (self.len == 0) return null; return self.pop(); } + + pub fn startsWith(self: Self, m: []const T) bool { + if (self.len < m.len) return false; + return mem.eql(T, self.items[0..m.len], m); + } + + pub fn endsWith(self: Self, m: []const T) bool { + if (self.len < m.len) return false; + const start = self.len - m.len; + return mem.eql(T, self.items[start..self.len], m); + } }; } diff --git a/lib/std/buffer.zig b/lib/std/buffer.zig index f808af1485..bcefe5bdfb 100644 --- a/lib/std/buffer.zig +++ b/lib/std/buffer.zig @@ -133,7 +133,7 @@ pub const Buffer = struct { pub fn startsWith(self: Buffer, m: []const u8) bool { if (self.len() < m.len) return false; - return mem.eql(u8, self.list.items[0..m.len], m); + return self.list.startsWith(m); } pub fn endsWith(self: Buffer, m: []const u8) bool { -- cgit v1.2.3