Введение в работу с файлами в Rust
Программа может хранить данные между запусками в файлах на диске. Язык не прячет работу с диском за особым синтаксисом: для чтения и записи служат команды из стандартной библиотеки, а исход операции описывают типом результата, с которым вы уже знакомы.
Файл читают и пишут готовыми командами, а ошибку пути возвращают как исход. Если путь не найден или доступ закрыт, функция отдает неудачный вариант результата, а не обрывает программу. Вызывающий код разбирает оба исхода или передает сбой выше знакомым знаком вопроса в теле функции.
Когда файл открывают для потоковой работы, ресурс освобождают сами: значение файла кончается вместе с именем в конце блока, и дескриптор закрывается без отдельной команды. Это тот же принцип, что и для других владеющих значений в Rust.
Файлы и первые предложения: read/ru.html
(весь файл читают в строку одним вызовом),
write/ru.html (запись кладет байты по
пути и создает файл, если его не было),
path/ru.html (путь разбирают на имя
и расширение), exists/ru.html (сведения
о пути говорят, есть ли он, и отдельно файл
это или папка), create/ru.html (новый
файл создают, чтобы потом писать в него по
частям), lines/ru.html (строки читают
по одной, и у каждой строки свой исход),
append/ru.html (допись добавляет байты
в конец, не стирая прежнее), remove/ru.html
(удаление убирает файл по пути), copy/ru.html
(копирование читает один путь и пишет другой),
rename/ru.html (переименование меняет
путь), dir/ru.html (папку создают отдельно
от файла), read-dir/ru.html (чтение папки
отдает имена того, что лежит внутри),
walk/ru.html (обход заходит в папку и
в ее папки той же функцией), remove-all/ru.html
(удаление дерева убирает папку вместе с тем,
что внутри), join/ru.html (склейка
соединяет папку и имя в один путь),
perm/ru.html (права файла читают из
сведений о пути), mtime/ru.html (время
правки читают из тех же сведений),
size/ru.html (размер файла это число
байт из сведений), practice/ru.html
(в этих задачах потренируем чтение и запись).