Takes a sentinel-terminated pointer and iterates over the memory to find the
sentinel and determine the length.
[*c] pointers are assumed to be non-null and 0-terminated.
pub fn len(value: anytype) usize
pub fn len(value: anytype) usize {
switch (@typeInfo(@TypeOf(value))) {
.pointer => |info| switch (info.size) {
.many => {
const sentinel = info.sentinel() orelse
@compileError("invalid type given to std.mem.len: " ++ @typeName(@TypeOf(value)));
return findSentinel(info.child, sentinel, value);
},
.c => {
assert(value != null);
return findSentinel(info.child, 0, value);
},
else => @compileError("invalid type given to std.mem.len: " ++ @typeName(@TypeOf(value))),
},
else => @compileError("invalid type given to std.mem.len: " ++ @typeName(@TypeOf(value))),
}
}