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 library itself.
pubconstWalker = struct {
inner: SelectiveWalker,
pubconstEntry = struct {
/// The containing directory. This can be used to operate directly on `basename`/// rather than `path`, avoiding `error.NameTooLong` for deeply nested paths./// The directory remains open until `next` or `deinit` is called.dir: Dir,
basename: [:0]constu8,
path: [:0]constu8,
kind: File.Kind,
/// Returns the depth of the entry relative to the initial directory./// Returns 1 for a direct child of the initial directory, 2 for an entry/// within a direct child of the initial directory, etc.pubfndepth(self: Walker.Entry) usize {
returnstd.mem.countScalar(u8, self.path, path.sep) + 1;
}
};
/// 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: *Walker, io: Io) !?Walker.Entry {
constentry = tryself.inner.next(io);
if (entry != nullandentry.?.kind == .directory) {
tryself.inner.enter(io, entry.?);
}
returnentry;
}
pubfndeinit(self: *Walker) void {
self.inner.deinit();
}
/// Leaves the current directory, continuing walking one level up./// If the current entry is a directory entry, then the "current directory"/// is the directory pertaining to the current entry.pubfnleave(self: *Walker, io: Io) void {
self.inner.leave(io);
}
}