/// 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.