/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

  1. # Работа с файловой системой (I/O). Создание консольного приложения
  2. В этой главе вы примените все знания полученные в предыдущих, а также познакомитесь
  3. с ещё не изученными API стандартной библиотеки. Мы будем создавать консольное приложение,
  4. которое будет использовать файл для чтения и записи. Также, вы будете использовать
  5. возможности командной строки.
  6. Скорость, безопасность, компиляция для множество платформ делает язык Rust удобным
  7. для создания консольных приложений. Создадим на Rust аналог приложения `grep`.
  8. Акроним grep расшифровывается, как глобальное средство поиска и печати
  9. **G**lobally search a **R**egular **E**xpression and **P**rint.. Часто `grep`
  10. используется для поиска файлов содержащих определенный текст. Для этого программа
  11. получает имя файла и строку как аргументы командной строки, далее читает файл и ищёт
  12. строки в этом файле, которые содержат искомый текст. Результатом работы программы
  13. являются строки, в которых был найден этот текст.
  14. Попутно, мы покажем как применять широко используемые возможности командной строки.
  15. Мы будем считывать значения переменной среды для настройки приложения. Также, мы
  16. будем печатать в поток ошибок (`stderr`), вместо стандартного потока (`stdout`).
  17. Это удобно в тех случаях, когда пользователь может выбрать направление вывода данных
  18. (в файл - при безошибочной работе и на консоль ошибок при каких-либо сложностях в
  19. работе программы).
  20. Один из участников Rust-сообщества, Эндрю Галлант (Andrew Gallant) уже реализовал
  21. полнофункциональный, очень быстрый аналог программы `grep` и назвал его
  22. [`ripgrep`](https://github.com/BurntSushi/ripgrep)<!-- ignore -->. Создаваемая же
  23. нами программа будет намного проще, но в тоже время вы получите знания для понимания
  24. этапов создания подобных проектов.
  25. Создаваемый проект будет использовать ранее изученные концепции:
  26. * Организация кода в виде модулей (Глава 7)
  27. * Использование векторов и строк (коллекции, Глава 8)
  28. * Обработка ошибок (Глава 9)
  29. * Использование типажей и переменных времени жизни (Глава 10)
  30. * Написание тестов (Глава 11)
  31. Мы также познакомимся с замыканиями, итераторами и объектами-типажами, которые будут подробнее
  32. описаны в главах 13 и 17.