Файл, состоящий из нулей

Если вы не понимаете, что тут делает эта картинка, не пугайтесь, это мем, их развелось столько, что обо всех и не узнаешь
Предпринимаю вторую попытку посмотреть на язык программирования «Раст», первую я предпринимал, когда язык бурно развивался и меня быстро утомила скорость с которой устаревают примеры.
Почитал руководство, написал «Песню о пиве», теперь попробовал решить более практическую задачу — у одного нашего клиента после восстановления сбойной файловой системы часть файлов занулилась — внутри них одни байты с кодом ноль. Сейчас надо бы её просканировать и восстановить из бакапа всё испортившееся.
В общем, попробовал написать нужную утилиту на «Расте», если кто его вдруг знает, покритикуйте, кода там совсем немного.
Правильней походу использовать https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.find , всё вместится в 1 строку и функция будет не нужна.
Спасибо! В Фейсбуке уже покритиковали (правда ленюсь переписать пока), но лишним точно не будет!
1) А зачем? Большинство файлов ненулевой длины, поэтому чаще на каждый файл будет stat + open + read вместо open + read
2) ага, read_to_end было моим первым, черновым вариантом. Читать всё в память мы не можем себе позволить, там могут любые файлы встретиться, никаких предположений я не строю
3) да, пожалуй так и стоит делать, правда я не понимаю чем плоха функция, пусть и однострочная. Компилятор не умеет инлайнить?
4) спасибо!
3) просто засорение пространства имён. Небольшую функцию, для которой есть только одна точка вызова, лучше оформить в виде лямбды. А замена for/if на iter/find (или iter/filter) делает код более читаемым. Инлайнит Раст мелкие функции или будет лишний `call` в бинарнике — вот не знаю, не исследовал.