But the problem here is we are parsing the whole file when we actually need one row at each moment.

How could it be done more efficiently? My current implementation just perform nasty string indexOf operations to indicate object boundaries and then call from_str::<Point>() on the substring, but it looks very hacky, unreliable and unwise.