Skip to content

Commit

Permalink
Translate ch15-04-rc.md via GitLocalize
Browse files Browse the repository at this point in the history
  • Loading branch information
dluschan authored and gitlocalize-app[bot] committed Nov 26, 2023
1 parent e6507d2 commit 3eb4a13
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion rustbook-ru/src/ch15-04-rc.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@

<span class="caption">Листинг 15-18: Определение <code>List</code>, использующее <code>Rc&lt;T&gt;</code></span>

Нам нужно добавить оператор `use`, чтобы подключить тип `Rc<T>` в область видимости, потому что он не входит в список автоматического импорта прелюдии. В `main`, мы создаём список владеющий 5 и 10, сохраняем его в новом `Rc<List>` переменной `a`. Затем при создании `b` и `c`, мы называем функцию `Rc::clone` и передаём ей ссылку на `Rc<List>` как аргумент `a`.
Нам нужно добавить инструкцию `use`, чтобы подключить тип `Rc<T>` в область видимости, потому что он не входит в список автоматического импорта прелюдии. В `main`, мы создаём список владеющий 5 и 10, сохраняем его в новом `Rc<List>` переменной `a`. Затем при создании `b` и `c`, мы называем функцию `Rc::clone` и передаём ей ссылку на `Rc<List>` как аргумент `a`.

Мы могли бы вызвать `a.clone()`, а не `Rc::clone(&a)`, но в Rust принято использовать `Rc::clone` в таком случае. Внутренняя реализация `Rc::clone` не делает глубокого копирования всех данных, как это происходит в типах большинства реализаций `clone`. Вызов `Rc::clone` только увеличивает счётчик ссылок, что не занимает много времени. Глубокое копирование данных может занимать много времени. Используя `Rc::clone` для подсчёта ссылок, можно визуально различать виды клонирования с глубоким копированием и клонирования, которые увеличивают количество ссылок. При поиске в коде проблем с производительностью нужно рассмотреть только клонирование с глубоким копированием и игнорировать вызовы `Rc::clone` .

Expand Down

0 comments on commit 3eb4a13

Please sign in to comment.