/second-edition/src/ch12-00-an-io-project.md
https://github.com/ruRust/rust_book_2ed · Markdown · 39 lines · 32 code · 7 blank · 0 comment · 0 complexity · 089376c2dc4c62262b469c1d5245d124 MD5 · raw file
- # Работа с файловой системой (I/O). Создание консольного приложения
- В этой главе вы примените все знания полученные в предыдущих, а также познакомитесь
- с ещё не изученными API стандартной библиотеки. Мы будем создавать консольное приложение,
- которое будет использовать файл для чтения и записи. Также, вы будете использовать
- возможности командной строки.
- Скорость, безопасность, компиляция для множество платформ делает язык Rust удобным
- для создания консольных приложений. Создадим на Rust аналог приложения `grep`.
- Акроним grep расшифровывается, как глобальное средство поиска и печати
- “**G**lobally search a **R**egular **E**xpression and **P**rint.”. Часто `grep`
- используется для поиска файлов содержащих определенный текст. Для этого программа
- получает имя файла и строку как аргументы командной строки, далее читает файл и ищёт
- строки в этом файле, которые содержат искомый текст. Результатом работы программы
- являются строки, в которых был найден этот текст.
- Попутно, мы покажем как применять широко используемые возможности командной строки.
- Мы будем считывать значения переменной среды для настройки приложения. Также, мы
- будем печатать в поток ошибок (`stderr`), вместо стандартного потока (`stdout`).
- Это удобно в тех случаях, когда пользователь может выбрать направление вывода данных
- (в файл - при безошибочной работе и на консоль ошибок при каких-либо сложностях в
- работе программы).
- Один из участников Rust-сообщества, Эндрю Галлант (Andrew Gallant) уже реализовал
- полнофункциональный, очень быстрый аналог программы `grep` и назвал его
- [`ripgrep`](https://github.com/BurntSushi/ripgrep)<!-- ignore -->. Создаваемая же
- нами программа будет намного проще, но в тоже время вы получите знания для понимания
- этапов создания подобных проектов.
- Создаваемый проект будет использовать ранее изученные концепции:
- * Организация кода в виде модулей (Глава 7)
- * Использование векторов и строк (коллекции, Глава 8)
- * Обработка ошибок (Глава 9)
- * Использование типажей и переменных времени жизни (Глава 10)
- * Написание тестов (Глава 11)
- Мы также познакомимся с замыканиями, итераторами и объектами-типажами, которые будут подробнее
- описаны в главах 13 и 17.