Общий смысл такой:
бывают типы обычные, а бывают ссылки (передача по значению, передача по ссылке, передача по указателю в C++)
идея Rust в том, чтобы определить, когда нужно удалить объект.
Если объект передаётся в функцию при помощи borrow (&) (то есть как как параметр "по ссылке"), то в конце функции такой объект не удаляется.
immutable borrow: Объекты переданные по ссылке менять нельзя внутри функции (потому что ссылка имеет свойство неизменяемости (immutable))
mutable borrow: Бывают и &mut ссылки - это указатели. То есть, объект всё равно не удаляется внутри функции, но его можно менять.
any borrow must last for a scope no greater than that of the owner.
In Rust, borrowing is tied to the scope that the borrow is valid for.
you may have one or the other of these two kinds of borrows, but not both at the same time:
- one or more references (&T) to a resource,
- exactly one mutable reference (&mut T).
А если объект передаётся в функцию без borrow (как бы "по значению", но тут другие термины используются, с другими смыслами), то после функции его уже нельзя использовать в вызывающей программе.
cannot borrow `x` as immutable because it is also borrowed as mutable
the mutable borrow prevents subsequent moves, borrows, or modification of `x` until the borrow ends
чтобы понять как это, надо прочитать три страницы:
https://doc.rust-lang.org/book/ownership.html
https://doc.rust-lang.org/book/referenc … owing.html
https://doc.rust-lang.org/book/lifetimes.html
Поскольку русские языки с кучей не работают (я Кумир имею в виду), то и проблем с передачей параметров в функции у них нет. Пора это дорабатывать.