Zig stream file lines with buffered reader

Zig
const std = @import("std");

pub fn main() !void {
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer _ = gpa.deinit();
    const alloc = gpa.allocator();
    const file = try std.fs.cwd().openFile("data.txt", .{});
    defer file.close();
    var buffered = std.io.bufferedReader(file.reader());
    const reader = buffered.reader();
    var line_no: usize = 0;
    while (try reader.readUntilDelimiterOrEofAlloc(alloc, '\n', 1 << 20)) |line| {
        defer alloc.free(line);
        line_no += 1;
        std.debug.print("{d}: {s}\n", .{ line_no, std.mem.trimRight(u8, line, "\r") });
    }
}