7.2 Заимствования
&xсоздаёт разделяемое заимствование,&var x— исключительное. Пока существует&var x, других заимствованийxи доступа кxнет; пока существуют&x, изменятьxнельзя.- Заимствование не может пережить заимствуемое значение.
- Без явных времён жизни. Типы-заимствования (
&T,&var T,[T],view T) НЕ ДОЛЖНЫ: храниться в поляхdata,enum, акторов; захватываться уходящими замыканиями; передаваться в другую задачу; входить вTask/stream. - Функция МОЖЕТ возвращать заимствование, только если оно получено из
selfили из единственного параметра-заимствования.
Определяется реализацией. Точность проверки заимствований (D-8051; DIV-002; D-600). Стандарт не вводит времена жизни и не задаёт алгоритм. Любая принятая программа ДОЛЖНА удовлетворять правилам выше; реализация МОЖЕТ отвергать программы, безопасность которых не может доказать. Эта реализация использует лексические заимствования: заём живёт до последнего оператора блока, упоминающего ссылку, а не до конца блока; для полей правило путь-чувствительно (
&var t.aне блокируетt.b).
Связанные диагностики
borrow-conflict, borrow-escape
См. также
Исходник: docs/spec/oxl-standard.md