pub fn Slice(comptime Pointer: type) type 1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103pub fn Slice(comptime Pointer: type) type {
const info = @typeInfo(Pointer).pointer;
switch (info.size) {
.slice => return Pointer,
.one => {
const child_info = @typeInfo(info.child);
comptime assert(child_info == .array);
const sentinel_ptr: ?*const child_info.array.child = @ptrCast(@alignCast(child_info.array.sentinel_ptr));
return @Pointer(
.slice,
info.attrs,
child_info.array.child,
if (sentinel_ptr) |ptr| ptr.* else null,
);
},
else => unreachable,
}
}
Given a pointer type, type-erases the array length if present, returning an equivalent pointer type that is always a slice.