authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2025-01-04 18:42:20 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2025-01-04 18:42:20 -08:00
log4d76a93f5ec7c354beb7ed237a94d17bc0c8581a
treec5241400d5d002782617343b788f7e06b16b4b21
parent7f5f1857e06fa23123d566cc4468133b57ed532e

add indexOfSlice


2 files changed, 20 insertions(+), 0 deletions(-)

src/indexOfSlice.zig created+19
...@@ -0,0 +1,19 @@
1const std = @import("std");
2const string = []const u8;
3const extras = @import("./lib.zig");
4
5pub fn indexOfSlice(comptime T: type, haystack: []const []const T, needle: []const T) ?usize {
6 for (haystack, 0..) |item, i| {
7 if (std.mem.eql(u8, item, needle)) {
8 return i;
9 }
10 }
11 return null;
12}
13
14test {
15 try std.testing.expect(indexOfSlice(u8, &.{ "a", "b", "c", "d" }, "b") == 1);
16}
17test {
18 try std.testing.expect(indexOfSlice(u8, &.{}, "b") == null);
19}
src/lib.zig+1
...@@ -99,3 +99,4 @@ pub usingnamespace @import("./isZigString.zig");...@@ -99,3 +99,4 @@ pub usingnamespace @import("./isZigString.zig");
99pub usingnamespace @import("./isIndexable.zig");99pub usingnamespace @import("./isIndexable.zig");
100pub usingnamespace @import("./isSlice.zig");100pub usingnamespace @import("./isSlice.zig");
101pub usingnamespace @import("./matchesNone.zig");101pub usingnamespace @import("./matchesNone.zig");
102pub usingnamespace @import("./indexOfSlice.zig");