0.15.1 Reader/Writer

/// Read all lines from file.
fn readLines(e: *Editor, file: std.fs.File) !void {
   var buf: [1024 * 1024]u8 = undefined;
   var reader = file.reader(&buf).interface;

   while (reader.takeDelimiterExclusive('\n')) |line| {
       try e.insertRow(e.buffer.rows.items.len, line);
   } else |err| if (err != error.EndOfStream) return err;
}

The problem you were running into was that std.fs.File.Reader needs to remain allocated. You made a copy of the std.Io.Reader interface, and then used that. This causes a problem when the std.fs.File.Reader functions do a @fieldParentPtr to find the address of the std.fs.File.Reader from the *std.Io.Reader address.

5 Likes