1. 1. Introduction
  2. 2. Введение
  3. 3. C чего начать
  4. 4. Изучение Rust
    1. 4.1. Угадайка
    2. 4.2. Обедающие философы
    3. 4.3. Вызов кода на Rust из других языков
  5. 5. Синтаксис и семантика
    1. 5.1. Связывание имён
    2. 5.2. Функции
    3. 5.3. Простые типы
    4. 5.4. Комментарии
    5. 5.5. Конструкция `if`
    6. 5.6. Циклы
    7. 5.7. Владение
    8. 5.8. Ссылки и заимствование
    9. 5.9. Время жизни
    10. 5.10. Изменяемость
    11. 5.11. Структуры
    12. 5.12. Перечисления
    13. 5.13. Конструкция `match`
    14. 5.14. Шаблоны сопоставления `match`
    15. 5.15. Синтаксис методов
    16. 5.16. Вектора
    17. 5.17. Строки
    18. 5.18. Обобщённое программирование
    19. 5.19. Типажи
    20. 5.20. Типаж `Drop`
    21. 5.21. Конструкция `if let`
    22. 5.22. Типажи-объекты
    23. 5.23. Замыкания
    24. 5.24. Универсальный синтаксис вызова функций
    25. 5.25. Контейнеры и модули
    26. 5.26. `const` и `static`
    27. 5.27. Атрибуты
    28. 5.28. Псевдонимы типов
    29. 5.29. Приведение типов
    30. 5.30. Ассоциированные типы
    31. 5.31. Безразмерные типы
    32. 5.32. Перегрузка операций
    33. 5.33. Преобразования при разыменовании
    34. 5.34. Макросы
    35. 5.35. Сырые указатели
    36. 5.36. Небезопасный код
  6. 6. Эффективное использование Rust
    1. 6.1. Стек и куча
    2. 6.2. Тестирование
    3. 6.3. Условная компиляция
    4. 6.4. Документация
    5. 6.5. Итераторы
    6. 6.6. Многозадачность
    7. 6.7. Обработка ошибок
    8. 6.8. Выбор гарантий
    9. 6.9. Интерфейс внешних функций
    10. 6.10. Типажи `Borrow` и `AsRef`
    11. 6.11. Каналы сборок
    12. 6.12. Using Rust without the standard library
  7. 7. Нестабильные возможности Rust
    1. 7.1. Плагины к компилятору
    2. 7.2. Встроенный ассемблерный код
    3. 7.3. Без stdlib
    4. 7.4. Внутренние средства
    5. 7.5. Элементы языка
    6. 7.6. Продвинутое руководство по компоновке
    7. 7.7. Тесты производительности
    8. 7.8. Синтаксис упаковки и шаблоны `match`
    9. 7.9. Шаблоны `match` для срезов
    10. 7.10. Ассоциированные константы
    11. 7.11. Пользовательские менеджеры памяти
  8. 8. Глоссарий
  9. 9. Syntax Index
  10. 10. Библиография

Введение к русскоязычному переводу

Эта книга представляет собой перевод «The Rust Programming Language». Оригинал книги расположен здесь.

Перевод окончен и соответствует stable версии книги на момент выхода Rust 1.2 stable. Могут встречаться несоответсвия оригиналу книги, но написанное здесь актуально для любого Rust 1.x, поскольку Rust гарантирует стабильность языка в пределах мажорной версии.

ВНИМАНИЕ! Если вы видите несоответствие примеров или текста реальному поведению, пожалуйста, создайте задачу или сразу делайте Pull Request с исправлениями. Мы не кусаемся и рады исправлениям! :wink:

Полезные ссылки

Чаты Ссылки
для обсуждения языка, получения помощи Join the chat at https://gitter.im/ruRust/general
для обсуждения самой книги и вопросов перевода Join the chat at https://gitter.im/ruRust/rust_book_ru

ruRust/rust_book_ru ruRust/rust_book_ru

Мы на Хабре

Соавторам

С чего начать

Есть некоторое количество очень простых проблем. Это опечатки, и, взяв одну из таких задач, вы сможете легко поучаствовать в переводе и очень нам поможете.

Не бойтесь code review, у нас не принято наезжать на новичков. :smile:

Сборка

Если вы занялись инфраструктурой, вам понадобится проверять свою работу локально.

Сейчас самый простой способ собрать книгу локально - это проделать те же действия, что делает Travis. Смотрите файл .travis.yml, разделы install, before_script, script, after_success. Они должны быть достаточно понятны сами по себе.

Тестирование

Если вы изменили инфраструктуру, следует проверить изменения. Проверка зависит от компонента, в который вы внесли изменение.

Если это стили и генерация книги - нужно сгенерировать книгу локально и посмотреть, что всё работает как надо. Конвейер преобразования HTML-версии в другие варианты проверяется так же.

Если вы внесли изменения в скрипты, вызываемые Travis, или в сам .travis.yaml, пожалуйста, следите за статусом сборки - он отображается в PR. PR, который не проходит сборку, принят не будет.

Где получить помощь

У этого репозитория есть чат-комната на Gitter. Если у вас возник вопрос по задаче или по тому, что вы взялись делать, как перевести какой-то термин или как собрать книгу локально - вам сюда.

Для опытных

Правила перевода.

Благодарности

Выражаем благодарность всем, кто принимал участие в создании этой книги.

От @kgv: «Хочу поблагодарить моих родителей: Таню и Володю. Без них не было бы этой книги».

Ошибки

Если вы встретили ошибку или неточность, пожалуйста, напишите о ней.

Ресурсы

Ревизия исходного кода данной версии книги

0e167f9