1const std = @import("std");
2const string = []const u8;
3const extras = @import("./lib.zig");
4
5pub fn opslice(slice: anytype, index: usize) ?std.meta.Elem(@TypeOf(slice)) {
6 if (slice.len <= index) return null;
7 return slice[index];
8}
9
10test {
11 const array = [_]u8{ 0, 1, 2, 3, 4, 5 };
12 const slice: []const u8 = &array;
13
14 try std.testing.expect(opslice(slice, 0) == 0);
15 try std.testing.expect(opslice(slice, 1) == 1);
16 try std.testing.expect(opslice(slice, 2) == 2);
17 try std.testing.expect(opslice(slice, 3) == 3);
18 try std.testing.expect(opslice(slice, 4) == 4);
19 try std.testing.expect(opslice(slice, 5) == 5);
20 try std.testing.expect(opslice(slice, 6) == null);
21}
22
23test {
24 const array = [_]u8{ 0, 1, 2, 3, 4, 5 };
25 const slice = &array;
26
27 try std.testing.expect(opslice(slice, 0) == 0);
28 try std.testing.expect(opslice(slice, 1) == 1);
29 try std.testing.expect(opslice(slice, 2) == 2);
30 try std.testing.expect(opslice(slice, 3) == 3);
31 try std.testing.expect(opslice(slice, 4) == 4);
32 try std.testing.expect(opslice(slice, 5) == 5);
33 try std.testing.expect(opslice(slice, 6) == null);
34}