OxL Справочник OxL
РусскийEnglish

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