├── .travis.yml ├── AUTHORS.md ├── CONTRIBUTING.md ├── README.md ├── README.rev.template.md ├── SUMMARY.md ├── TOKEN ├── cover.jpg ├── script ├── build.sh ├── check.py ├── check_captions.sh ├── check_stray_quotes.sh ├── convert-epub.sh ├── convert-mobi.sh ├── convert-pdf.sh ├── convert.sh ├── deploy.sh ├── fix.py ├── install_calibre.sh ├── install_rustbook.sh ├── replace_quotation_marks.sh └── replace_quotation_marks_en.sh ├── src ├── INTRODUCTION.md ├── INTRODUCTION.md.original_hash ├── advanced-linking.md ├── advanced-linking.md.original_hash ├── associated-constants.md ├── associated-constants.md.original_hash ├── associated-types.md ├── associated-types.md.original_hash ├── attributes.md ├── attributes.md.original_hash ├── benchmark-tests.md ├── benchmark-tests.md.original_hash ├── bibliography.md ├── bibliography.md.original_hash ├── borrow-and-asref.md ├── borrow-and-asref.md.original_hash ├── box-syntax-and-patterns.md ├── box-syntax-and-patterns.md.original_hash ├── casting-between-types.md ├── casting-between-types.md.original_hash ├── choosing-your-guarantees.md ├── choosing-your-guarantees.md.original_hash ├── closures.md ├── closures.md.original_hash ├── comments.md ├── comments.md.original_hash ├── compiler-plugins.md ├── compiler-plugins.md.original_hash ├── concurrency.md ├── concurrency.md.original_hash ├── conditional-compilation.md ├── conditional-compilation.md.original_hash ├── const-and-static.md ├── const-and-static.md.original_hash ├── crates-and-modules.md ├── crates-and-modules.md.original_hash ├── custom-allocators.md ├── custom-allocators.md.original_hash ├── deref-coercions.md ├── deref-coercions.md.original_hash ├── dining-philosophers.md ├── dining-philosophers.md.original_hash ├── documentation.md ├── documentation.md.original_hash ├── drop.md ├── drop.md.original_hash ├── effective-rust.md ├── effective-rust.md.original_hash ├── enums.md ├── enums.md.original_hash ├── error-handling.md ├── error-handling.md.original_hash ├── ffi.md ├── ffi.md.original_hash ├── functions.md ├── functions.md.original_hash ├── generics.md ├── generics.md.original_hash ├── getting-started.md ├── getting-started.md.original_hash ├── glossary.md ├── glossary.md.original_hash ├── guessing-game.md ├── guessing-game.md.original_hash ├── if-let.md ├── if-let.md.original_hash ├── if.md ├── if.md.original_hash ├── inline-assembly.md ├── inline-assembly.md.original_hash ├── intrinsics.md ├── intrinsics.md.original_hash ├── iterators.md ├── iterators.md.original_hash ├── lang-items.md ├── lang-items.md.original_hash ├── learn-rust.md ├── learn-rust.md.original_hash ├── lifetimes.md ├── lifetimes.md.original_hash ├── loops.md ├── loops.md.original_hash ├── macros.md ├── macros.md.original_hash ├── match.md ├── match.md.original_hash ├── method-syntax.md ├── method-syntax.md.original_hash ├── mutability.md ├── mutability.md.original_hash ├── nightly-rust.md ├── nightly-rust.md.original_hash ├── no-stdlib.md ├── no-stdlib.md.original_hash ├── operators-and-overloading.md ├── operators-and-overloading.md.original_hash ├── ownership.md ├── ownership.md.original_hash ├── patterns.md ├── patterns.md.original_hash ├── primitive-types.md ├── primitive-types.md.original_hash ├── raw-pointers.md ├── raw-pointers.md.original_hash ├── references-and-borrowing.md ├── references-and-borrowing.md.original_hash ├── release-channels.md ├── release-channels.md.original_hash ├── rust-inside-other-languages.md ├── rust-inside-other-languages.md.original_hash ├── slice-patterns.md ├── slice-patterns.md.original_hash ├── strings.md ├── strings.md.original_hash ├── structs.md ├── structs.md.original_hash ├── syntax-and-semantics.md ├── syntax-and-semantics.md.original_hash ├── syntax-index.md ├── syntax-index.md.original_hash ├── testing.md ├── testing.md.original_hash ├── the-stack-and-the-heap.md ├── the-stack-and-the-heap.md.original_hash ├── trait-objects.md ├── trait-objects.md.original_hash ├── traits.md ├── traits.md.original_hash ├── type-aliases.md ├── type-aliases.md.original_hash ├── ufcs.md ├── ufcs.md.original_hash ├── unsafe.md ├── unsafe.md.original_hash ├── unsized-types.md ├── unsized-types.md.original_hash ├── using-rust-without-the-standard-library.md ├── using-rust-without-the-standard-library.md.original_hash ├── variable-bindings.md ├── variable-bindings.md.original_hash ├── vectors.md └── vectors.md.original_hash └── static └── css ├── rust-book-pdf.css ├── rust-book-pdf.min.css ├── rust-book.css ├── rust-book.min.css └── rust.css /.travis.yml: -------------------------------------------------------------------------------- 1 | language: rust 2 | rust: nightly 3 | 4 | env: 5 | global: 6 | - secure: "VYGOokUvoh/2oDnWUzJvq+qw5/nYa8b2AVl6smBsILv3jdxgA/nZWrmmUxvXmOVDP1aNqN0jNhWGZQUruvfCdYg97e+eoRPtWxCrirND0SWPgsc7+JKHCt/I28goMYNwO3G9DNGAliNNKaJHfPZt0guFHCKmcKsIeenq45t7UdpYCaD7rvKuPHt2sLDRobXYrPyWBRkNP7wvOKwdjg9Kj4xV7Lho8HOoLQFT7LVBorl06I1fWZz/KHLBE0vxR149Mv7VWqiA45EoLQSkWpZxj/ICmCk3MwP3Zsh/37XYDY9ahR3D0M3dlRIcPE+6vL0DXHv7o9GZ8tJDtZ3wJu8lnVs2pYwpgiCdaX+VVk1mogpDI3fesFbleG9MRDv02Zk/IZuXg+pBNuoaAqTCLLtIdXscW1VnT9fMO2is/3SP0O8FPGfsCTXPO71gxKngyI0rFM09w3skqHXMrOzP2/+Eq730RrCFx8+I8ln+lAJ0jb8uw8LkWpm1/2xaiB+ZaKGcJMC8LyAZ4pXpc+Fob8FgDSfmqUwMzJx1GS7pchQdLB2E9nHalxeOQVA9tRlDlrOYJlc/6X7dJ6rr0jBNMuYZMr9GRoPalRV1xg24oLQ5n3McuR6Y+15dMO2lxFFRAQBojv2SMrtOOz3HnsFAFo2Yx43IilUmEgDfmgV96hsx1/k=" 7 | 8 | install: 9 | - source ./script/install_rustbook.sh 10 | - if [ $TRAVIS_PULL_REQUEST == "false" ] && [ $TRAVIS_BRANCH == "master" ]; then 11 | source ./script/install_calibre.sh; 12 | fi 13 | 14 | before_script: 15 | - python --version 16 | - rustbook --version 17 | - if [ $TRAVIS_PULL_REQUEST == "false" ] && [ $TRAVIS_BRANCH == "master" ]; then 18 | ebook-convert --version; 19 | fi 20 | - ./script/fix.py 21 | - ./script/check.py 22 | 23 | script: 24 | - ./script/build.sh 25 | 26 | after_success: 27 | - if [ $TRAVIS_PULL_REQUEST == "false" ] && [ $TRAVIS_BRANCH == "master" ]; then 28 | ./script/convert.sh; 29 | fi 30 | - if [ $TRAVIS_PULL_REQUEST == "false" ] && [ $TRAVIS_BRANCH == "master" ]; then 31 | ./script/deploy.sh; 32 | fi 33 | 34 | branches: 35 | only: master 36 | 37 | notifications: 38 | webhooks: 39 | urls: 40 | - https://webhooks.gitter.im/e/9c2acdc270c9f1c84459 41 | on_success: change # options: [always|never|change] default: always 42 | on_failure: always # options: [always|never|change] default: always 43 | on_start: false # default: false 44 | 45 | cache: 46 | directories: 47 | - $HOME/calibre 48 | 49 | addons: 50 | apt: 51 | packages: 52 | - parallel 53 | 54 | -------------------------------------------------------------------------------- /AUTHORS.md: -------------------------------------------------------------------------------- 1 | * [dieu](https://github.com/dieu) 2 | * [funkill](https://github.com/funkill) 3 | * [hhblaze](https://github.com/hhblaze) 4 | * [ithamsteri](https://github.com/ithamsteri) 5 | * [jiumx60rus](https://github.com/jiumx60rus) 6 | * [kgv](https://github.com/kgv) 7 | * [mkpankov](https://github.com/mkpankov) 8 | * [rastopyr](https://github.com/rastopyr) 9 | * [suhr](https://github.com/suhr) 10 | * [vessd](https://github.com/vessd) 11 | * [vkibalyuk](https://github.com/VKibalyuk) 12 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Участие в проекте 2 | 3 | Спасибо за интерес к нашему проекту. Есть много способов помочь, и все виды 4 | помощи ценны для нас. 5 | 6 | ## Расскажите о нас 7 | 8 | Многие люди знают английский на достаточном уровне, но всё же испытывают 9 | трудности при чтении больших книг в оригинале. Поэтому рассказывайте о нас 10 | друзьям и коллегам - это полезнее, чем кажется. 11 | 12 | ## Опечатки и стиль 13 | 14 | Следующий простой способ помочь - исправлять опечатки, которые вы встречаете по 15 | мере чтения. Усилия, которые вы затратите на исправление опечатки, примерно 16 | равны усилиям на создание задачи об опечатке - и при этом снимают с нас часть 17 | работы. 18 | 19 | Это проще, чем кажется - любой файл в репозитории можно редактировать прямо в 20 | браузере. При этом GitHub сам создаст ветку и сделает Pull Request. Просто 21 | кликните по файлу в списке в веб-интерфейсе GitHub, а затем нажмите на маленькую 22 | иконку карандаша. 23 | 24 | Отредактируйте файл, введите сообщение коммита - и готово. Pull Request создан и 25 | мы уведомлены о нём. 26 | 27 | Уже созданные задачи на исправление опечаток имеют соответствующую 28 | [метку][typos] в репозитории. 29 | 30 | [typos]: https://github.com/ruRust/rust_book_ru/labels/%D0%BE%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%BA%D0%B0 31 | 32 | Корявые фразы, калька с английского, непонятные места подлежат исправлению тем 33 | же способом. У них также есть [метка][style]. 34 | 35 | [style]: https://github.com/ruRust/rust_book_ru/labels/%D1%81%D1%82%D0%B8%D0%BB%D1%8C 36 | 37 | ## Перевод 38 | 39 | Вы можете поучаствовать в переводе ещё не переведённых частей или помочь 40 | привести перевод в соответствие с оригиналом. 41 | 42 | Для этого смотрите задачи с [меткой][content] "тип: содержимое". 43 | 44 | [content]: https://github.com/ruRust/rust_book_ru/labels/%D1%82%D0%B8%D0%BF%3A%20%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%BC%D0%BE%D0%B5 45 | 46 | Эти задачи, как правило, можно выполнять, вообще не собирая проект локально - 47 | Markdown достаточно предсказуем, чтобы редактировать текст книг без локальной 48 | проверки. 49 | 50 | ## Инфраструктура 51 | 52 | Есть определённые инфраструктурные задачи. Они, как правило, требуют 53 | программирования - или, по крайней мере, редактирования каких-то 54 | конфигурационных файлов и скриптов. 55 | 56 | Это задачи с [меткой][infra] "тип: инфраструктура". 57 | 58 | [infra]: https://github.com/ruRust/rust_book_ru/labels/%D1%82%D0%B8%D0%BF%3A%20%D0%B8%D0%BD%D1%84%D1%80%D0%B0%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0 59 | 60 | ## Pull Request'ы 61 | 62 | При создании и рецензировании Pull Request'ов следует придерживаться трёх 63 | правил: 64 | 65 | 1. Понятно описывайте свою работу. Это значит, что сообщения коммитов и Pull 66 | Request'а должны быть в правильном формате и на русском языке. 67 | 2. Адекватно реагируйте на замечания в процессе рецензирования. Рецензирование - 68 | способ поддержания качества нашего проекта. 69 | 3. Не забивайте на обновление PR по результатам рецензирования. Вы лучше всего 70 | разбираетесь в том, что вы сделали, и кроме вас никто не займётся вливанием 71 | ваших правок в проект. 72 | 73 | Подробнее о процессе и правилах читайте [здесь][contrib]. 74 | 75 | [contrib]: https://rustycrate.ru/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%B0/2016/03/07/contributing.html 76 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Введение к русскоязычному переводу 2 | 3 | **ВНИМАНИЕ!** Это перевод первого издания. Сейчас перевод заморожен, как и оригинал. Дальнейшая работа - [перевод второго издания](https://github.com/ruRust/community/issues/3). 4 | 5 | **Issues и Pull Requests здесь больше не принимаются.** 6 | 7 | Эта книга представляет собой перевод «The Rust Programming Language». Оригинал 8 | книги расположен [здесь][original]. 9 | 10 | Перевод окончен и соответствует stable версии книги на момент выхода Rust 1.2 stable. 11 | Могут встречаться несоответсвия оригиналу книги, но написанное здесь актуально 12 | для любого Rust 1.x, поскольку Rust гарантирует стабильность языка в пределах 13 | мажорной версии. 14 | 15 | * [Читать книгу](http://ruRust.github.io/rust_book_ru/) 16 | * [Скачать в PDF](https://raw.githubusercontent.com/ruRust/rust_book_ru/gh-pages/converted/rustbook.pdf) 17 | * [Скачать в EPUB](https://raw.githubusercontent.com/ruRust/rust_book_ru/gh-pages/converted/rustbook.epub) 18 | * [Скачать в MOBI](https://raw.githubusercontent.com/ruRust/rust_book_ru/gh-pages/converted/rustbook.mobi) 19 | 20 | # Полезные ссылки 21 | 22 | Чаты | Ссылки 23 | ---------------------------------------|-------- 24 | для обсуждения языка, получения помощи | [![Join the chat at https://gitter.im/ruRust/general](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ruRust/general?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 25 | для обсуждения самой книги и вопросов перевода | [![Join the chat at https://gitter.im/ruRust/rust_book_ru](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ruRust/rust_book_ru?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 26 | 27 | [![ruRust/rust_book_ru](http://issuestats.com/github/ruRust/rust_book_ru/badge/pr?style=flat)](http://issuestats.com/github/ruRust/rust_book_ru) 28 | [![ruRust/rust_book_ru](http://issuestats.com/github/ruRust/rust_book_ru/badge/issue?style=flat)](http://issuestats.com/github/ruRust/rust_book_ru) 29 | 30 | [Мы на Хабре](http://habrahabr.ru/post/266813/) 31 | 32 | # Соавторам 33 | 34 | ## С чего начать 35 | 36 | Есть некоторое количество очень простых проблем. Это 37 | [опечатки](https://github.com/ruRust/rust_book_ru/labels/%D0%BE%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%BA%D0%B0), 38 | и, взяв одну из таких задач, вы сможете легко поучаствовать в переводе 39 | и очень нам поможете. 40 | 41 | Не бойтесь code review, у нас не принято наезжать на новичков. :smile: 42 | 43 | ## Сборка 44 | 45 | Если вы занялись инфраструктурой, вам понадобится проверять свою работу 46 | локально. 47 | 48 | Сейчас самый простой способ собрать книгу локально - это проделать те же действия, что 49 | делает Travis. Смотрите файл `.travis.yml`, разделы `install`, `before_script`, 50 | `script`, `after_success`. Они должны быть достаточно понятны сами по себе. 51 | 52 | ## Тестирование 53 | 54 | Если вы изменили инфраструктуру, следует проверить изменения. Проверка зависит 55 | от компонента, в который вы внесли изменение. 56 | 57 | Если это стили и генерация книги - нужно сгенерировать книгу локально и 58 | посмотреть, что всё работает как надо. Конвейер преобразования HTML-версии в 59 | другие варианты проверяется так же. 60 | 61 | Если вы внесли изменения в скрипты, вызываемые Travis, или в сам `.travis.yaml`, 62 | пожалуйста, следите за статусом сборки - он отображается в PR. PR, который не 63 | проходит сборку, принят не будет. 64 | 65 | ## Где получить помощь 66 | 67 | У этого репозитория есть чат-комната на Gitter. Если у вас возник 68 | вопрос по задаче или по тому, что вы взялись делать, как перевести 69 | какой-то термин или как собрать книгу локально - вам 70 | [сюда](https://gitter.im/ruRust/rust_book_ru). 71 | 72 | ## Для опытных 73 | 74 | [Правила перевода](https://github.com/ruRust/rust_book_ru/wiki/Правила). 75 | 76 | ## Благодарности 77 | 78 | Выражаем благодарность [всем, кто принимал участие в создании этой 79 | книги][authors]. 80 | 81 | От @kgv: «Хочу поблагодарить моих родителей: **Таню** и **Володю**. Без них не 82 | было бы этой книги». 83 | 84 | ## Ошибки 85 | 86 | Если вы встретили ошибку или неточность, пожалуйста, [напишите о ней][error]. 87 | 88 | ## Ресурсы 89 | 90 | * rustbook расположен [здесь][rustbook] 91 | * репозиторий расположен [здесь][github] 92 | 93 | [authors]: https://github.com/ruRust/rust_book_ru/blob/master/AUTHORS.md 94 | [original]: https://doc.rust-lang.org/book 95 | [github]: https://github.com/ruRust/rust_book_ru 96 | [error]: https://github.com/ruRust/rust_book_ru/issues 97 | [rustbook]: http://ruRust.github.io/rust_book_ru 98 | -------------------------------------------------------------------------------- /README.rev.template.md: -------------------------------------------------------------------------------- 1 | 2 | ## Ревизия исходного кода данной версии книги 3 | 4 | `` 5 | -------------------------------------------------------------------------------- /SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Содержание 2 | 3 | * [Введение](src/INTRODUCTION.md) 4 | * [C чего начать](src/getting-started.md) 5 | * [Изучение Rust](src/learn-rust.md) 6 | * [Угадайка](src/guessing-game.md) 7 | * [Обедающие философы](src/dining-philosophers.md) 8 | * [Вызов кода на Rust из других языков](src/rust-inside-other-languages.md) 9 | * [Синтаксис и семантика](src/syntax-and-semantics.md) 10 | * [Связывание имён](src/variable-bindings.md) 11 | * [Функции](src/functions.md) 12 | * [Простые типы](src/primitive-types.md) 13 | * [Комментарии](src/comments.md) 14 | * [Конструкция `if`](src/if.md) 15 | * [Циклы](src/loops.md) 16 | * [Владение](src/ownership.md) 17 | * [Ссылки и заимствование](src/references-and-borrowing.md) 18 | * [Время жизни](src/lifetimes.md) 19 | * [Изменяемость](src/mutability.md) 20 | * [Структуры](src/structs.md) 21 | * [Перечисления](src/enums.md) 22 | * [Конструкция `match`](src/match.md) 23 | * [Шаблоны сопоставления `match`](src/patterns.md) 24 | * [Синтаксис методов](src/method-syntax.md) 25 | * [Вектора](src/vectors.md) 26 | * [Строки](src/strings.md) 27 | * [Обобщённое программирование](src/generics.md) 28 | * [Типажи](src/traits.md) 29 | * [Типаж `Drop`](src/drop.md) 30 | * [Конструкция `if let`](src/if-let.md) 31 | * [Типажи-объекты](src/trait-objects.md) 32 | * [Замыкания](src/closures.md) 33 | * [Универсальный синтаксис вызова функций](src/ufcs.md) 34 | * [Контейнеры и модули](src/crates-and-modules.md) 35 | * [`const` и `static`](src/const-and-static.md) 36 | * [Атрибуты](src/attributes.md) 37 | * [Псевдонимы типов](src/type-aliases.md) 38 | * [Приведение типов](src/casting-between-types.md) 39 | * [Ассоциированные типы](src/associated-types.md) 40 | * [Безразмерные типы](src/unsized-types.md) 41 | * [Перегрузка операций](src/operators-and-overloading.md) 42 | * [Преобразования при разыменовании](src/deref-coercions.md) 43 | * [Макросы](src/macros.md) 44 | * [Сырые указатели](src/raw-pointers.md) 45 | * [Небезопасный код](src/unsafe.md) 46 | * [Эффективное использование Rust](src/effective-rust.md) 47 | * [Стек и куча](src/the-stack-and-the-heap.md) 48 | * [Тестирование](src/testing.md) 49 | * [Условная компиляция](src/conditional-compilation.md) 50 | * [Документация](src/documentation.md) 51 | * [Итераторы](src/iterators.md) 52 | * [Многозадачность](src/concurrency.md) 53 | * [Обработка ошибок](src/error-handling.md) 54 | * [Выбор гарантий](src/choosing-your-guarantees.md) 55 | * [Интерфейс внешних функций](src/ffi.md) 56 | * [Типажи `Borrow` и `AsRef`](src/borrow-and-asref.md) 57 | * [Каналы сборок](src/release-channels.md) 58 | * [Using Rust without the standard library](src/using-rust-without-the-standard-library.md) 59 | * [Нестабильные возможности Rust](src/nightly-rust.md) 60 | * [Плагины к компилятору](src/compiler-plugins.md) 61 | * [Встроенный ассемблерный код](src/inline-assembly.md) 62 | * [Без stdlib](src/no-stdlib.md) 63 | * [Внутренние средства](src/intrinsics.md) 64 | * [Элементы языка](src/lang-items.md) 65 | * [Продвинутое руководство по компоновке](src/advanced-linking.md) 66 | * [Тесты производительности](src/benchmark-tests.md) 67 | * [Синтаксис упаковки и шаблоны `match`](src/box-syntax-and-patterns.md) 68 | * [Шаблоны `match` для срезов](src/slice-patterns.md) 69 | * [Ассоциированные константы](src/associated-constants.md) 70 | * [Пользовательские менеджеры памяти](src/custom-allocators.md) 71 | * [Глоссарий](src/glossary.md) 72 | * [Syntax Index](src/syntax-index.md) 73 | * [Библиография](src/bibliography.md) 74 | -------------------------------------------------------------------------------- /TOKEN: -------------------------------------------------------------------------------- 1 | 1 2 | -------------------------------------------------------------------------------- /cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rust-lang-ru/rust_book_ru/cd6c07610e36bf87e19d3cabaf167542f8ec44bd/cover.jpg -------------------------------------------------------------------------------- /script/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | REV=$(git rev-parse --short HEAD) 4 | 5 | sed "s//$REV/g" README.rev.template.md >> README.md 6 | 7 | rustbook build 8 | 9 | sed -i "s/@import url('..\/rust.css');/@import url('.\/rust.css');/g" _book/rustbook.css 10 | sed -i "s/