Zig 0.17.0-dev (Split by item)

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.

Resource

Fetch.Resource
const Resource = union(enum)

File

lib/compiler/Maker/Fetch.zig:1086

Code

const Resource = union(enum) {
    file: Io.File.Reader,
    http_request: HttpRequest,
    git: Git,
    dir: Io.Dir,

    const Git = struct {
        session: git.Session,
        fetch_stream: git.Session.FetchStream,
        want_oid: git.Oid,
    };

    const HttpRequest = struct {
        request: std.http.Client.Request,
        response: std.http.Client.Response,
        transfer_buffer: []u8,
        decompress: std.http.Decompress,
        decompress_buffer: []u8,
    };

    fn deinit(resource: *Resource, io: Io) void {
        switch (resource.*) {
            .file => |*file_reader| file_reader.file.close(io),
            .http_request => |*http_request| http_request.request.deinit(),
            .git => |*git_resource| {
                git_resource.fetch_stream.deinit();
            },
            .dir => |*dir| dir.close(io),
        }
        resource.* = undefined;
    }

    fn reader(resource: *Resource) *Io.Reader {
        return switch (resource.*) {
            .file => |*file_reader| return &file_reader.interface,
            .http_request => |*http_request| return http_request.response.readerDecompressing(
                http_request.transfer_buffer,
                &http_request.decompress,
                http_request.decompress_buffer,
            ),
            .git => |*g| return &g.fetch_stream.reader,
            .dir => unreachable,
        };
    }
}