Recursively iterates over a directory, but requires the user to opt-in to recursing into each directory entry.
dir must have been opened with OpenOptions.iterate set to true.
Walker.deinit releases allocated memory and directory handles.
The order of returned file system entries is undefined.
dir will not be closed after walking it.
See also walk.
pub fn walkSelectively(dir: Dir, allocator: Allocator) !SelectiveWalker
pub fn walkSelectively(dir: Dir, allocator: Allocator) !SelectiveWalker {
var stack: std.ArrayList(SelectiveWalker.StackItem) = .empty;
try stack.append(allocator, .{
.iter = dir.iterate(),
.dirname_len = 0,
});
return .{
.stack = stack,
.name_buffer = .empty,
.allocator = allocator,
};
}