Hi. I'm new to Zig and low-level programming. I'm trying to learn the Io basics and using allocators through this simple code where I try to read a file and print it line by line. I'd appreciate any feedback on potential issues and tips to make it more idiomatic. Thanks in advance!
const std = @import("std");
const Io = std.Io;
pub fn main() !void {
var debug_allocator: std.heap.DebugAllocator(.{}) = .init;
defer _ = debug_allocator.deinit();
const gpa = debug_allocator.allocator();
var threaded: Io.Threaded = .init(gpa, .{});
defer threaded.deinit();
const io = threaded.io();
const file = try Io.Dir.cwd().openFile(io, "housing.csv", .{});
defer file.close(io);
var reader_buffer: [1024]u8 = undefined;
var file_reader: Io.File.Reader = .init(file, io, &reader_buffer);
var stdout_buffer: [1024]u8 = undefined;
var stdout_file_writer: Io.File.Writer = .init(.stdout(), io, &stdout_buffer);
var stdout_writer = &stdout_file_writer.interface;
var line_number: usize = 0;
while (try file_reader.interface.takeDelimiter('\n')) |line| {
try stdout_writer.print("line {d} --> {s}\n", .{ line_number, line });
line_number += 1;
}
try stdout_writer.flush();
}