This is an example of documentation generated by ZigDoc, an alternative to Zig's built-in Auto Doc feature. See also examples in other modes/formats. The project being documented here (as the example) is the Zig standard library. Public Function
After each call to this function, and on deinit(), the memory returned from this function becomes invalid. A copy must be made in order to keep a reference to the path.
pubfnnext(self: *SelectiveWalker, io: Io) Error!?Walker.Entry {
while (self.stack.items.len > 0) {
consttop = &self.stack.items[self.stack.items.len - 1];
vardirname_len = top.dirname_len;
if (top.iter.next(io) catch |err| {
// If we get an error, then we want the user to be able to continue// walking if they want, which means that we need to pop the directory// that errored from the stack. Otherwise, all future `next` calls would// likely just fail with the same error.varitem = self.stack.pop().?;
if (self.stack.items.len != 0) {
item.iter.reader.dir.close(io);
}
returnerr;
}) |entry| {
self.name_buffer.shrinkRetainingCapacity(dirname_len);
if (self.name_buffer.items.len != 0) {
tryself.name_buffer.append(self.allocator, path.sep);
dirname_len += 1;
}
tryself.name_buffer.ensureUnusedCapacity(self.allocator, entry.name.len + 1);
self.name_buffer.appendSliceAssumeCapacity(entry.name);
self.name_buffer.appendAssumeCapacity(0);
constwalker_entry: Walker.Entry = .{
.dir = top.iter.reader.dir,
.basename = self.name_buffer.items[dirname_len .. self.name_buffer.items.len - 1 :0],
.path = self.name_buffer.items[0 .. self.name_buffer.items.len - 1 :0],
.kind = entry.kind,
};
returnwalker_entry;
} else {
varitem = self.stack.pop().?;
if (self.stack.items.len != 0) {
item.iter.reader.dir.close(io);
}
}
}
returnnull;
}
After each call to this function, and on deinit(), the memory returned from this function becomes invalid. A copy must be made in order to keep a reference to the path.