Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial commit #1397

Open
wants to merge 92 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
4707105
Initial commit
AveNRU Aug 26, 2024
c3f0f26
Initial commit
AveNRU Aug 26, 2024
f56f8c1
обновление
AveNRU Aug 26, 2024
5a98dbf
2
AveNRU Aug 26, 2024
ed7b7d2
2 день
AveNRU Aug 27, 2024
8db288e
3
AveNRU Aug 29, 2024
06613b5
4
AveNRU Aug 29, 2024
cec9896
4
AveNRU Aug 29, 2024
aa29d49
5
AveNRU Aug 30, 2024
54cb968
5
AveNRU Aug 30, 2024
297938c
5
AveNRU Aug 30, 2024
08f129a
Merge branch 'rus2' of https://github.com/AveNRU/book into rus2
AveNRU Aug 30, 2024
d3951b8
Update .gitignore
AveNRU Aug 30, 2024
eeede08
6
AveNRU Aug 30, 2024
0c8c64f
6
AveNRU Aug 30, 2024
a826355
6
AveNRU Aug 30, 2024
7fcbf0b
Update README.md
AveNRU Aug 30, 2024
afea5b5
6
AveNRU Aug 31, 2024
19184b5
6
AveNRU Aug 31, 2024
fda90fd
6
AveNRU Aug 31, 2024
90fb1f4
6
AveNRU Aug 31, 2024
df1fb71
6
AveNRU Aug 31, 2024
1ac9b31
Update ch03-02-data-types.md
AveNRU Aug 31, 2024
85d0f1c
6
AveNRU Aug 31, 2024
8026f7c
Update заимствованные слова1.xlsx
AveNRU Aug 31, 2024
c88b08b
6
AveNRU Sep 2, 2024
1620aee
Revert "6"
AveNRU Sep 2, 2024
a5d5f5f
понедельник утро - работа
AveNRU Sep 2, 2024
4b5c396
7
AveNRU Sep 2, 2024
a261077
5
AveNRU Sep 2, 2024
9d8df55
5
AveNRU Sep 2, 2024
c18d57f
6
AveNRU Sep 2, 2024
09499d5
5
AveNRU Sep 2, 2024
dcfc9d1
6
AveNRU Sep 2, 2024
824277a
Update заимствованные слова1.xlsx
AveNRU Sep 3, 2024
2203ee9
7
AveNRU Sep 3, 2024
a25587c
6
AveNRU Sep 3, 2024
a9f71f2
6
AveNRU Sep 3, 2024
fd20d27
s
AveNRU Sep 4, 2024
72ffff2
32
AveNRU Sep 4, 2024
e93acad
5
AveNRU Sep 4, 2024
a636b8a
5
AveNRU Sep 4, 2024
08d3b90
56
AveNRU Sep 5, 2024
4f149d0
5
AveNRU Sep 5, 2024
7418d51
5
AveNRU Sep 6, 2024
43ef2ca
5
AveNRU Sep 6, 2024
a2f25bc
5
AveNRU Sep 6, 2024
e3e607b
Update ch08-02-strings.md
AveNRU Sep 6, 2024
d9166bb
6
AveNRU Sep 6, 2024
1cea52f
+
AveNRU Sep 6, 2024
fc27f89
+
AveNRU Sep 6, 2024
e22c0d7
6
AveNRU Sep 9, 2024
8111509
6
AveNRU Sep 9, 2024
498538f
6
AveNRU Sep 9, 2024
891c4e7
5
AveNRU Sep 10, 2024
fac1f31
5
AveNRU Sep 10, 2024
9076007
5
AveNRU Sep 10, 2024
123ccc8
Merge branch 'rus2' of https://github.com/AveNRU/book into rus2
AveNRU Sep 10, 2024
8d76a6f
6
AveNRU Sep 11, 2024
d966ce6
Update ch02-00-guessing-game-tutorial.md
AveNRU Sep 11, 2024
2ab19c4
5
AveNRU Sep 11, 2024
c4e153d
Update заимствованные слова1.xlsx
AveNRU Sep 11, 2024
34f1af2
6
AveNRU Sep 11, 2024
5cf9b5c
1
AveNRU Sep 11, 2024
22c42a9
5
AveNRU Sep 11, 2024
5a53d70
6
AveNRU Sep 11, 2024
859466d
5
AveNRU Sep 12, 2024
4f3bb29
5
AveNRU Sep 12, 2024
4da7a6f
5
AveNRU Sep 12, 2024
37a0385
Update ch13-02-iterators.md
AveNRU Sep 13, 2024
9a577ce
+
AveNRU Sep 16, 2024
ce93102
+
AveNRU Sep 17, 2024
047d521
+
AveNRU Sep 18, 2024
3747233
+
AveNRU Sep 18, 2024
c26e788
+
AveNRU Sep 20, 2024
f94fc3c
+
AveNRU Sep 20, 2024
1c4fc7a
+
AveNRU Sep 20, 2024
ee9a1f9
+
AveNRU Sep 23, 2024
07264b9
+
AveNRU Sep 23, 2024
0e4976f
+
AveNRU Sep 24, 2024
2f2662d
+
AveNRU Sep 24, 2024
a4b3e71
+
AveNRU Sep 25, 2024
2425f3e
+
AveNRU Sep 25, 2024
9e4d786
+
AveNRU Sep 25, 2024
00a0744
+
AveNRU Sep 26, 2024
3e6ef18
+
AveNRU Sep 26, 2024
8922d8a
+
AveNRU Sep 26, 2024
bd5f264
+
AveNRU Sep 27, 2024
91d8f70
+
AveNRU Sep 30, 2024
b9ce9ac
+
AveNRU Sep 30, 2024
1010b71
+
AveNRU Sep 30, 2024
01d7f87
+
AveNRU Sep 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
5
  • Loading branch information
AveNRU committed Sep 6, 2024
commit a2f25bca91cc2a90ce424fb2009183cc6662b022
2 changes: 1 addition & 1 deletion rustbook-ru/src/ch04-02-references-and-borrowing.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

<img alt="&amp;String s pointing at String s1" src="img/trpl04-05.svg" class="">

<span class="caption">Рисунок 4-5: диаграмма для <code>&amp;String s</code>, указывающей на <code>String s1</code></span>
<span class="caption">Рисунок 4-5: рисунок для <code>&amp;String s</code>, указывающей на <code>String s1</code></span>

> Примечание: противоположностью ссылки с использованием `&` является *разыменование*, выполняемое с помощью приказчика разыменования `*`. Мы увидим некоторые исходы использования приказчика разыменования в главе 8 и обсудим подробности разыменования в главе 15.

Expand Down
18 changes: 9 additions & 9 deletions rustbook-ru/src/ch04-03-slices.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,15 +72,15 @@ fn second_word(s: &String) -> (usize, usize) {
{{#rustdoc_include ../listings/ch04-understanding-ownership/no-listing-17-slice/src/main.rs:here}}
```

Вместо ссылки на всю `String` `hello` является ссылкой на часть `String`, указанную в дополнительном куске рукописи `[0..5]`. Мы создаём срезы, используя ряд в квадратных скобках, указав `[starting_index..ending_index]`, где `starting_index` — это первое положение, а`ending_index` конечный_порядковый указатель— это на единицу больше, чем последнее положение в срезе. Внутри устройства данных среза хранит начальное положение и длину среза, что соответствует `ending_index` - `starting_index`. Итак, в случае `let world = &s[6..11];`, `world` будет срезом, содержащим указатель на байт с порядковым указателем 6 `s` со значением длины `5`.
Вместо ссылки на всю `String` `hello` является ссылкой на часть `String`, указанную в дополнительном куске рукописи `[0..5]`. Мы создаём срезы, используя ряд в квадратных скобках, указав `[starting_index..ending_index]`, где `starting_index` — это первое положение, а`ending_index` конечный_порядковый указатель— это на единицу больше, чем последнее положение в срезе. Внутри устройства данных среза хранится: начальное положение и длина среза, что соответствует `ending_index` - `starting_index`. Итак, в случае `let world = &s[6..11];`, `world` будет срезом, содержащим указатель на байт с порядковым указателем 6 `s` со значением длины `5`.

Рисунок 4-6 отображает это на диаграмме.
Рисунок 4-6 отображает это на рисункее.

<img alt="world containing a pointer to the 6th byte of String s and a length 5" src="img/trpl04-06.svg" class="">

<span class="caption">Рисунок 4-6: Строковый срез ссылается на часть <code>String</code></span>

С правилами написания Ржавчины `..`, если вы хотите начать с порядкового указателя 0, вы можете отбросить значение перед двумя точками. Другими словами, они равны:
С правилами написания Ржавчины `..`, если вы хотите начать с порядкового указателя 0, вы можете отбросить значение перед двумя точками. Другими словами, они равнозначны:

```rust
let s = String::from("hello");
Expand All @@ -89,7 +89,7 @@ let slice = &s[0..2];
let slice = &s[..2];
```

Таким же образом, если ваш срез включает последний байт `String`, вы можете отбросить конечный номер. Это означает, что они равны:
Таким же образом, если ваш срез включает последний байт `String`, вы можете отбросить конечный номер. Это означает, что они равнозначны:

```rust
let s = String::from("hello");
Expand All @@ -100,7 +100,7 @@ let slice = &s[3..len];
let slice = &s[3..];
```

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

```rust
let s = String::from("hello");
Expand All @@ -111,10 +111,10 @@ let slice = &s[0..len];
let slice = &s[..];
```

> Примечание. Порядковые указатели ряда срезов строк должны располагаться на допустимых границах знаков UTF-8. Если вы попытаетесь создать отрывок строки нарушая границы знака в котором больше одного байта, ваша программа завершится с ошибкой. В целях введения срезов строк мы предполагаем, что в этом разделе используется только ASCII; более подробное обсуждение обработки UTF-8 находится в разделе [«Сохранение закодированного писания UTF-8 со строками»].<!-- ignore --> раздел главы 8.
> Примечание. Порядковые указатели ряда срезов строк должны располагаться в допустимых границах знаков UTF-8. Если вы попытаетесь создать отрывок строки нарушая границы знака, в котором больше одного байта, ваша программа завершится с ошибкой. В целях введения срезов строк мы предполагаем, что в этом разделе используется только ASCII; более подробное обсуждение обработки UTF-8 находится в разделе [«Сохранение закодированного писания UTF-8 со строками»].<!-- ignore --> раздел главы 8.
>

Давайте используем полученную сведения и перепишем способ `first_word` так, чтобы он возвращал срез. Для обозначения вида "срез строки" существует запись `&str`:
Давайте используем полученные сведения и перепишем способ `first_word` так, чтобы он возвращал срез. Для обозначения вида "срез строки" существует запись `&str`:

<span class="filename">Файл: src/main.rs</span>

Expand Down Expand Up @@ -146,7 +146,7 @@ fn second_word(s: &String) -> &str {
{{#include ../listings/ch04-understanding-ownership/no-listing-19-slice-error/output.txt}}
```

Напомним из правил заимствования, что если у нас есть неизменяемая ссылка на что-то, мы не можем также взять изменяемую ссылку. Поскольку для `clear` необходимо обрезать `String`, необходимо получить изменяемую ссылку. `println!` после вызова `clear` использует ссылку в `word`, поэтому неизменяемая ссылка в это мгновение всё ещё должна быть действительной. Ржавчина запрещает одновременное существование изменяемой ссылки в виде`clear` и неизменяемой ссылки в `word`, и сборка завершается ошибкой. Ржавчина не только упростил использование нашего API, но и устранил целый класс ошибок во время сборки!
Напомним из правил заимствования, что если у нас есть неизменяемая ссылка на что-то, мы не можем также взять изменяемую ссылку. Поскольку для `clear` необходимо обрезать `String`, необходимо получить изменяемую ссылку. `println!` после вызова `clear` использует ссылку в `word`, поэтому неизменяемая ссылка в это мгновение всё ещё должна быть действительной. Ржавчина запрещает одновременное существование изменяемой ссылки в виде`clear` и неизменяемой ссылки в `word`, и сборка завершается ошибкой. Ржавчина не только упростил использование нашего API, но и устранил целое семейство ошибок во время сборки!

<!-- Old heading. Do not remove or links may break. -->

Expand All @@ -170,7 +170,7 @@ let s = "Hello, world!";
fn first_word(s: &String) -> &str {
```

Более опытный пользователь Rustacean вместо этого написал бы ярлык, показанную в приложении 4.9, потому что это позволяет нам использовать одну и ту же функцию как для значений `&String`, так и для значений `&str`.
Более опытный пользователь Rustacean вместо этого написал бы ярлык, показанный в приложении 4.9, потому что это позволяет нам использовать одну и ту же функцию как для значений `&String`, так и для значений `&str`.

```rust,ignore
{{#rustdoc_include ../listings/ch04-understanding-ownership/listing-04-09/src/main.rs:here}}
Expand Down
2 changes: 1 addition & 1 deletion rustbook-ru/src/ch15-05-interior-mutability.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## `RefCell<T>` и образец внутренней изменяемости

*Внутренняя изменяемость* - это образец разработки Ржавчина, который позволяет вам изменять данные даже при наличии неизменяемых ссылок на эти данные; обычно такое действие запрещено правилами заимствования. Для изменения данных образец использует `unsafe` рукопись внутри устройства данных, чтобы обойти обычные правила Ржавчина управляющие изменяемость и заимствование. Небезопасный (unsafe) рукопись даёт понять сборщику, что мы самостоятельно следим за соблюдением этих правил, а не полагаемся на то, что сборщик будет делать это для нас; подробнее о небезопасном рукописи мы поговорим в главе 19.
*Внутренняя изменяемость* - это образец разработки Ржавчина, который позволяет вам изменять данные даже при наличии неизменяемых ссылок на эти данные; обычно такое действие запрещено правилами заимствования. Для изменения данных образец использует `unsafe` рукопись внутри устройства данных, чтобы обойти обычные правила Ржавчины управляющие изменчивостью и заимствование. Небезопасная (unsafe) рукопись даёт понять сборщику, что мы самостоятельно следим за соблюдением этих правил, а не полагаемся на то, что сборщик будет делать это для нас; подробнее о небезопасной рукописи мы поговорим в главе 19.

Мы можем использовать виды, в которых применяется образец внутренней изменяемости, только если мы можем обеспечить, что правила заимствования будут соблюдаться во время выполнения, несмотря на то, что сборщик не сможет этого обеспечить. В этом случае `небезопасный` рукопись оборачивается безопасным API, и внешне вид остаётся неизменяемым.

Expand Down
2 changes: 1 addition & 1 deletion rustbook-ru/src/ch15-06-reference-cycles.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
{{#include ../listings/ch15-smart-pointers/listing-15-26/output.txt}}
```

Количество ссылок на образцы `Rc<List>` как в `a`, так и в `b` равно 2 после того, как мы заменили список в `a` на ссылку на `b`. В конце `main` Ржавчина уничтожает переменную `b`, что уменьшает количество ссылок на `Rc<List>` из `b` с 2 до 1. Память, которую `Rc<List>` занимает в куче, не будет освобождена в это мгновение, потому что количество ссылок на неё равно 1, а не 0. Затем Ржавчина удаляет `a`, что уменьшает количество ссылок образца `Rc<List>` в `a` с 2 до 1. Память этого образца также не может быть освобождена, поскольку другой образец `Rc<List>` по-прежнему ссылается на него. Таким образом, память, выделенная для списка не будет освобождена никогда. Чтобы наглядно представить этот круговорот ссылок, мы создали диаграмму на рисунке 15-4.
Количество ссылок на образцы `Rc<List>` как в `a`, так и в `b` равно 2 после того, как мы заменили список в `a` на ссылку на `b`. В конце `main` Ржавчина уничтожает переменную `b`, что уменьшает количество ссылок на `Rc<List>` из `b` с 2 до 1. Память, которую `Rc<List>` занимает в куче, не будет освобождена в это мгновение, потому что количество ссылок на неё равно 1, а не 0. Затем Ржавчина удаляет `a`, что уменьшает количество ссылок образца `Rc<List>` в `a` с 2 до 1. Память этого образца также не может быть освобождена, поскольку другой образец `Rc<List>` по-прежнему ссылается на него. Таким образом, память, выделенная для списка не будет освобождена никогда. Чтобы наглядно представить этот круговорот ссылок, мы создали рисунок на рисунке 15-4.

<img src="img/trpl15-04.svg" class="center" alt="Reference cycle of lists">

Expand Down
2 changes: 1 addition & 1 deletion rustbook-ru/src/ch19-01-unsafe-rust.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
- Выполнение небезопасной сущности
- Доступ к полям в `union`

Важно понимать, что `unsafe` не отключает проверку заимствования или любые другие проверки безопасности языка Ржавчина: если вы используете ссылку в небезопасном рукописи, она всё равно будет проверена. Единственное, что делает ключевое слово `unsafe` - даёт вам доступ к этим пяти возможностям, безопасность работы с памятью в которых не проверяет сборщик. Вы по-прежнему получаете некоторую степень безопасности внутри небезопасного раздела.
Важно понимать, что `unsafe` не отключает проверку заимствования или любые другие проверки безопасности языка Ржавчина: если вы используете ссылку в небезопасной рукописи, она всё равно будет проверена. Единственное, что делает ключевое слово `unsafe` - даёт вам доступ к этим пяти возможностям, безопасность работы с памятью в которых не проверяет сборщик. Вы по-прежнему получаете некоторую степень безопасности внутри небезопасного раздела.

Кроме того, `unsafe` не означает, что рукопись внутри этого раздела является неизбежно опасным или он точно будет иметь сбои с безопасностью памяти: цель состоит в том, что вы, как программист, заверяете, что рукопись внутри раздела `unsafe` будет обращаться к действительной памяти правильным образом.

Expand Down
Binary file modified заимствованные слова1.xlsx
Binary file not shown.