Skip to content

Commit

Permalink
Merge pull request #401 from rust-lang-ru/gitlocalize-13991
Browse files Browse the repository at this point in the history
picture link
  • Loading branch information
blandger authored Oct 30, 2020
2 parents becd26e + 3f4d771 commit 5a3fbaf
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions rustbook-ru/src/ch15-06-reference-cycles.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@

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


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

<span class="caption">Рисунок 15-4: Ссылочная зацикленность списков <code>a</code> и <code>b</code> указывающих друг на друга</span>

Expand Down Expand Up @@ -155,11 +154,11 @@ children: RefCell { value: [] } }] } })

В этой главе рассказано как использовать умные указатели для обеспечения различных гарантий и компромиссов по сравнению с обычными ссылками, которые Rust использует по умолчанию. Тип `Box<T>` имеет известный размер и указывает на данные размещённые в куче. Тип `Rc<T>` отслеживает количество ссылок на данные в куче, поэтому данные могут иметь несколько владельцев. Тип `RefCell<T>` с его внутренней изменяемостью предоставляет тип, который можно использовать при необходимости неизменного типа, но необходимости изменить внутреннее значение этого типа; он также обеспечивает соблюдение правил заимствования во время выполнения, а не во время компиляции.

Мы обсудили также типажи <code>Deref</code> и <code>Drop</code>, которые обеспечивают большую функциональность умных указателей. Мы исследовали ссылочную зацикленность, которая может вызывать утечки памяти и как это предотвратить с помощью типа <code>Weak<T></code>.
Мы обсудили также типажи `Deref` и `Drop`, которые обеспечивают большую функциональность умных указателей. Мы исследовали ссылочную зацикленность, которая может вызывать утечки памяти и как это предотвратить с помощью типа `Weak<T>`.

Если эта глава вызвала у вас интерес и вы хотите реализовать свои собственные умные указатели, обратитесь к [”The Rustonomicon”] за более полезной информацией.

Далее мы поговорим о параллелизме в Rust. Вы даже узнаете о нескольких новых умных указателях.


[”The Rustonomicon”]: ../nomicon/index.html
[”The Rustonomicon”]: ../nomicon/index.html

0 comments on commit 5a3fbaf

Please sign in to comment.