Browse Source

+

pull/1397/head
AveN RU 3 months ago
parent
commit
9049b06ee2
  1. 5
      .gitignore
  2. 120
      README.md
  3. 2
      rustbook-ru/Cargo.toml
  4. 100
      rustbook-ru/README.md
  5. 6
      rustbook-ru/src/ch03-01-variables-and-mutability.md
  6. 2
      rustbook-ru/src/ch18-03-oo-design-patterns.md

5
.gitignore vendored

@ -431,3 +431,8 @@ rustbook-ru/src/черновик @@ -431,3 +431,8 @@ rustbook-ru/src/черновик
*/target
*\target
*.lock
*.lock
*.lock
/logs
rustbook-ru/listings/ch20-advanced-features/no-listing-21-pancakes/hello_macro/Cargo.lock
/rustbook-ru/logs

120
README.md

@ -1,18 +1,116 @@ @@ -1,18 +1,116 @@
# Язык программирования Rust (The Rust Programming Language)
# The Rust Programming Language
В данном репозитории содержится перевод книги [The Rust Programming Language](https://github.com/rust-lang/book).
![Build Status](https://github.com/rust-lang/book/workflows/CI/badge.svg)
## Зачем ещё один репозиторий?
This repository contains the source of "The Rust Programming Language" book.
Этот репозиторий подключён к системе перевода и вся работа ведётся там.
Сама система перевода нужна для отслеживания изменений в оригинале книги и
за счёт этого становится более удобной поддержка перевода, так как не надо
самому переводчику искать что изменилось - система сама это показывает.
[The book is available in dead-tree form from No Starch Press][nostarch].
## GitLocalize
[nostarch]: https://nostarch.com/rust-programming-language-2nd-edition
Дело на GitLocalize: https://gitlocalize.com/repo/4579
You can also read the book for free online. Please see the book as shipped with
the latest [stable], [beta], or [nightly] Rust releases. Be aware that issues
in those versions may have been fixed in this repository already, as those
releases are updated less frequently.
## Правила участия в переводе
[stable]: https://doc.rust-lang.org/stable/book/
[beta]: https://doc.rust-lang.org/beta/book/
[nightly]: https://doc.rust-lang.org/nightly/book/
Правила участия в переводе описаны в [этом документе](https://github.com/rust-lang-ru/book/blob/master/CONTRIBUTING.md).
See the [releases] to download just the code of all the code listings that appear in the book.
[releases]: https://github.com/rust-lang/book/releases
## Requirements
Building the book requires [mdBook], ideally the same version that
rust-lang/rust uses in [this file][rust-mdbook]. To get it:
[mdBook]: https://github.com/rust-lang/mdBook
[rust-mdbook]: https://github.com/rust-lang/rust/blob/master/src/tools/rustbook/Cargo.toml
```bash
$ cargo install mdbook --locked --version <version_num>
```
The book also uses two mdbook plugins which are part of this repository. If you
do not install them, you will see warnings when building and the output will not
look right, but you _will_ still be able to build the book. To use the plugins,
you should run:
```bash
$ cargo install --locked --path packages/mdbook-trpl --force
```
## Building
To build the book, type:
```bash
$ mdbook build
```
The output will be in the `book` subdirectory. To check it out, open it in
your web browser.
_Firefox:_
```bash
$ firefox book/index.html # Linux
$ open -a "Firefox" book/index.html # OS X
$ Start-Process "firefox.exe" .\book\index.html # Windows (PowerShell)
$ start firefox.exe .\book\index.html # Windows (Cmd)
```
_Chrome:_
```bash
$ google-chrome book/index.html # Linux
$ open -a "Google Chrome" book/index.html # OS X
$ Start-Process "chrome.exe" .\book\index.html # Windows (PowerShell)
$ start chrome.exe .\book\index.html # Windows (Cmd)
```
To run the tests:
```bash
$ cd packages/trpl
$ mdbook test --library-path packages/trpl/target/debug/deps
```
## Contributing
We'd love your help! Please see [CONTRIBUTING.md][contrib] to learn about the
kinds of contributions we're looking for.
[contrib]: https://github.com/rust-lang/book/blob/main/CONTRIBUTING.md
Because the book is [printed][nostarch], and because we want
to keep the online version of the book close to the print version when
possible, it may take longer than you're used to for us to address your issue
or pull request.
So far, we've been doing a larger revision to coincide with [Rust Editions](https://doc.rust-lang.org/edition-guide/). Between those larger
revisions, we will only be correcting errors. If your issue or pull request
isn't strictly fixing an error, it might sit until the next time that we're
working on a large revision: expect on the order of months or years. Thank you
for your patience!
### Translations
We'd love help translating the book! See the [Translations] label to join in
efforts that are currently in progress. Open a new issue to start working on
a new language! We're waiting on [mdbook support] for multiple languages
before we merge any in, but feel free to start!
[Translations]: https://github.com/rust-lang/book/issues?q=is%3Aopen+is%3Aissue+label%3ATranslations
[mdbook support]: https://github.com/rust-lang/mdBook/issues/5
## Spellchecking
To scan source files for spelling errors, you can use the `spellcheck.sh`
script available in the `ci` directory. It needs a dictionary of valid words,
which is provided in `ci/dictionary.txt`. If the script produces a false
positive (say, you used the word `BTreeMap` which the script considers invalid),
you need to add this word to `ci/dictionary.txt` (keep the sorted order for
consistency).

2
rustbook-ru/Cargo.toml

@ -11,7 +11,7 @@ exclude = [ @@ -11,7 +11,7 @@ exclude = [
[workspace.dependencies]
walkdir = "2.3.1"
docopt = "1.1.0"
serde = "1.0.226"
serde = "1.0.228"
regex = "1.11.3"
lazy_static = "1.5.0"
flate2 = "1.1.2"

100
rustbook-ru/README.md

@ -1,21 +1,30 @@ @@ -1,21 +1,30 @@
# Язык программирования Ржавчина
# The Rust Programming Language
Данное хранилище содержит перевод второго издания “Язык программирования Ржавчина”.
![Build Status](https://github.com/rust-lang/book/workflows/CI/badge.svg)
Второе издание - это переработанная книга "The Ржавчина язык программирования", которая будет напечатана издательством "No Starch Press" примерно в мае 2018 года. Последнюю сведения о дате выхода книги и о способе ее заказа вы можете узнать на сайте самого издательства [No Starch Press][nostarch].
This repository contains the source of "The Rust Programming Language" book.
[nostarch]: https://nostarch.com/rust
[The book is available in dead-tree form from No Starch Press][nostarch].
Книгу можно [Прочесть в сети](https://rustycrate.ru/book).
[nostarch]: https://nostarch.com/rust-programming-language-2nd-edition
Подлинник книги вы можете прочесть [в сети][html]; несколько последних глав еще не закончены, но готовая часть книги заметно улучшена по сравнению с первым изданием. Составители изначальной книги советуют начать чтение со второго издания.
You can also read the book for free online. Please see the book as shipped with
the latest [stable], [beta], or [nightly] Rust releases. Be aware that issues
in those versions may have been fixed in this repository already, as those
releases are updated less frequently.
[html]: http://rust-lang.github.io/book/
[stable]: https://doc.rust-lang.org/stable/book/
[beta]: https://doc.rust-lang.org/beta/book/
[nightly]: https://doc.rust-lang.org/nightly/book/
## Требования
See the [releases] to download just the code of all the code listings that appear in the book.
Сборка книги требует библиотеку [mdBook], лучше всего - когда это будет то же исполнение, которое
rust-lang/rust использует [этом файле][rust-mdbook]. Чтобы получить её:
[releases]: https://github.com/rust-lang/book/releases
## Requirements
Building the book requires [mdBook], ideally the same version that
rust-lang/rust uses in [this file][rust-mdbook]. To get it:
[mdBook]: https://github.com/rust-lang/mdBook
[rust-mdbook]: https://github.com/rust-lang/rust/blob/master/src/tools/rustbook/Cargo.toml
@ -24,25 +33,28 @@ rust-lang/rust использует [этом файле][rust-mdbook]. Чтоб @@ -24,25 +33,28 @@ rust-lang/rust использует [этом файле][rust-mdbook]. Чтоб
$ cargo install mdbook --locked --version <version_num>
```
Книга также использует два расширения mdbook, которые являются частью этого репозитория. Если вы их не установите, вы увидите предупреждения при сборке, и вывод будет выглядеть неправильно и искаженно, но вы *все равно* сможете собрать книгу. Чтобы использовать расширения,вы должны запустить:
The book also uses two mdbook plugins which are part of this repository. If you
do not install them, you will see warnings when building and the output will not
look right, but you _will_ still be able to build the book. To use the plugins,
you should run:
```bash
$ cargo install --locked --path packages/mdbook-trpl-listing
$ cargo install --locked --path packages/mdbook-trpl-note
$ cargo install --locked --path packages/mdbook-trpl --force
```
## Сборка
## Building
Для того, чтобы собрать книгу, перейдите в нужную папку с помощью приказов cd - first-edition для первого, либо second-edition для второго издания.
Далее введите следующий приказ:
To build the book, type:
```bash
$ mdbook build
```
Итогом сборки книги будет являться созданная подпапка `book`и все ее содержимое. Для проверки откройте книгу в любом обозревателе.
The output will be in the `book` subdirectory. To check it out, open it in
your web browser.
_Firefox:_
```bash
$ firefox book/index.html # Linux
$ open -a "Firefox" book/index.html # OS X
@ -51,6 +63,7 @@ $ start firefox.exe .\book\index.html # Windows (Cmd) @@ -51,6 +63,7 @@ $ start firefox.exe .\book\index.html # Windows (Cmd)
```
_Chrome:_
```bash
$ google-chrome book/index.html # Linux
$ open -a "Google Chrome" book/index.html # OS X
@ -58,39 +71,46 @@ $ Start-Process "chrome.exe" .\book\index.html # Windows (PowerShell) @@ -58,39 +71,46 @@ $ Start-Process "chrome.exe" .\book\index.html # Windows (PowerShell)
$ start chrome.exe .\book\index.html # Windows (Cmd)
```
Для запуска проверок:
To run the tests:
```bash
$ mdbook test
$ cd packages/trpl
$ mdbook test --library-path packages/trpl/target/debug/deps
```
## Contributing
# Полезные ссылки
Чаты | Ссылки
---------------------------------------|--------
для обсуждения языка, получения помощи | [![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)
для обсуждения самой книги и вопросов перевода | [![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)
[![ruRust/rust_book_ru](http://issuestats.com/github/ruRust/rust_book_ru/badge/pr?style=flat)](http://issuestats.com/github/ruRust/rust_book_ru)
[![ruRust/rust_book_ru](http://issuestats.com/github/ruRust/rust_book_ru/badge/issue?style=flat)](http://issuestats.com/github/ruRust/rust_book_ru)
We'd love your help! Please see [CONTRIBUTING.md][contrib] to learn about the
kinds of contributions we're looking for.
[contrib]: https://github.com/rust-lang/book/blob/main/CONTRIBUTING.md
# Сосоставителям
Because the book is [printed][nostarch], and because we want
to keep the online version of the book close to the print version when
possible, it may take longer than you're used to for us to address your issue
or pull request.
## С чего начать
So far, we've been doing a larger revision to coincide with [Rust Editions](https://doc.rust-lang.org/edition-guide/). Between those larger
revisions, we will only be correcting errors. If your issue or pull request
isn't strictly fixing an error, it might sit until the next time that we're
working on a large revision: expect on the order of months or years. Thank you
for your patience!
При желании помочь с переводом - для этого пишите в объединение, указанное выше. Вам ответят на любые вопросы по теме.
Нам особенно важна помощь именно со вторым изданием!
Не бойтесь code review, у нас не принято наезжать на новичков. :smile:
### Translations
## Для опытных
We'd love help translating the book! See the [Translations] label to join in
efforts that are currently in progress. Open a new issue to start working on
a new language! We're waiting on [mdbook support] for multiple languages
before we merge any in, but feel free to start!
[Правила перевода](https://github.com/ruRust/rust_book_ru/wiki/Правила).
[Translations]: https://github.com/rust-lang/book/issues?q=is%3Aopen+is%3Aissue+label%3ATranslations
[mdbook support]: https://github.com/rust-lang/mdBook/issues/5
## Источники
* первое издание пособия по Ржавчине расположено [здесь][original]
* перевод первого издания расположен [здесь][rustbook]
## Spellchecking
[rustbook]: http://ruRust.github.io/rust_book_ru
[original]: https://doc.rust-lang.org/book/first-edition/
To scan source files for spelling errors, you can use the `spellcheck.sh`
script available in the `ci` directory. It needs a dictionary of valid words,
which is provided in `ci/dictionary.txt`. If the script produces a false
positive (say, you used the word `BTreeMap` which the script considers invalid),
you need to add this word to `ci/dictionary.txt` (keep the sorted order for
consistency).

6
rustbook-ru/src/ch03-01-variables-and-mutability.md

@ -26,7 +26,7 @@ println!("Значение переменной x: {}", x); @@ -26,7 +26,7 @@ println!("Значение переменной x: {}", x);
Вы получили сообщение об ошибке `cannot assign twice to immutable variable `x``, потому что попытались присвоить новое значение неизменяемой переменной `x`.
Важно, чтобы при попытке изменить значение, объявленное неизменяемым, выдавались ошибки времени сборки, так как подобный случай может привести к сбоям. Если одна часть нашей рукописи исполняется исходя из уверенности в неизменяемости значения, а другая часть изменяет это значение, то велика вероятность , что первая часть не выполнит своего предназначения. Причину такой ошибки бывает трудно отследить, особенно если вторая часть рукописи изменяет значение лишь *изредка*. Сборщик Ржавчины предоставляет заверение, что если объявить значение неизменяемым, то оно действительно не изменится, а значит, не нужно следить за этим самим. Таким образом, ваша рукопись становится проще для понимания.
Важно, чтобы при попытке изменить значение, объявленное неизменяемым, выдавались ошибки во время сборки, так как подобный случай может привести к сбоям. Если одна часть нашей рукописи исполняется исходя из уверенности в неизменяемости значения, а другая часть изменяет это значение, то велика вероятность , что первая часть не выполнит своего предназначения. Причину такой ошибки бывает трудно отследить, особенно если вторая часть рукописи изменяет значение лишь *изредка*. Сборщик Ржавчины предоставляет заверение, что если объявить значение неизменяемым, то оно действительно не изменится, а значит, не нужно следить за этим самим. Таким образом, ваша рукопись становится проще для понимания.
Однако изменяемость может быть очень полезной и может сделать рукопись более удобной для написания. Хотя переменные по умолчанию неизменяемы, их можно сделать изменяемыми, добавив `mut` перед именем переменной, как это было сделано в [Главе 2]. Добавление `mut` также передаёт будущим читателям рукописи намерение, обозначая, что другие части рукописи будут изменять значение этой переменной.
@ -50,9 +50,9 @@ println!("Значение переменной x: {}", x); @@ -50,9 +50,9 @@ println!("Значение переменной x: {}", x);
Подобно неизменяемым переменным, *постоянные переменные* — это значения, которые связаны с именем и не могут изменяться, но между постоянными переменными и переменными есть несколько различий.
Во-первых, нельзя использовать `mut` с постоянными переменными. Постоянные переменные не просто неизменяемы по умолчанию — они неизменяемы всегда. Для объявления постоянных переменных используется ключевое слово `const` вместо `let`, а также вид данных значения *должен быть* указан в изложении. Мы рассмотрим виды данных и изложение в следующем разделе [«Виды данных».]<!-- ignore -->, так что не беспокойтесь о подробностях прямо сейчас. Просто знайте, что вы всегда должны определять вид данных.
Во-первых, нельзя использовать `mut` с постоянными переменными. Постоянные переменные не просто неизменяемы по умолчанию — они неизменяемы всегда. Для объявления постоянных переменных используется ключевое слово `const` вместо `let`, а также вид данных значения *должен быть* указан в изложении. Мы рассмотрим виды данных и их изложение в следующем разделе [«Виды данных».]<!-- ignore -->, так что не беспокойтесь о подробностях прямо сейчас. Просто знайте, что вы всегда должны указывать вид данных.
Постоянные переменные можно объявлять в любой области видимости, включая вездесущую, благодаря этому они полезны для значений, которые нужны во многих частях рукописи.
Постоянные переменные можно объявлять в любой области видимости, включая вездесущую, благодаря этому они полезны для значений, которые нужны во многих разделах рукописи.
Последнее отличие в том, что постоянные переменные могут быть заданы только постоянным выражением, но не итогом вычисленного во время выполнения значения.

2
rustbook-ru/src/ch18-03-oo-design-patterns.md

@ -181,7 +181,7 @@ @@ -181,7 +181,7 @@
Другой повтор включает в себя схожие выполнения способов `request_review` и `approve` у `Post`. Оба способа передают выполнения одного и того же способа значению поля `state` вида данных `Option` и устанавливают итогом новое значение поля `state`. Если бы у `Post` было много способов, которые следовали этому образцу, мы могли бы рассмотреть определение макроса для устранения повтора (смотри раздел ["Макросы"]<!-- --> в главе 19).
Выполняя образец "Состояние" точно так, как он определён для предметно-направленных языков, мы не настолько полно используем преимущества Ржавчина, как могли бы. Давайте посмотрим на некоторые изменения, которые мы можем внести в дополнение `blog`, чтобы недопустимые состояния и переходы превратить в ошибки времени сборки.
Выполняя образец "Состояние" точно так, как он определён для предметно-направленных языков, мы не настолько полно используем преимущества Ржавчина, как могли бы. Давайте посмотрим на некоторые изменения, которые мы можем внести в дополнение `blog`, чтобы недопустимые состояния и переходы превратить в ошибки во время сборки.
#### Кодирование состояний и поведения в виде данных

Loading…
Cancel
Save