Правила Rust'a для ссылок можно просуммировать так:
В Rust позволяет иметь только одну изменяемую ссылку на объект или несколько неизменяемых, но не оба типа ссылок одновременно.
Ссылка не должна жить дольше, чем существует её владелец, который может быть удален по выходу из области видимости.
Обычно это не вызывает проблем при передаче ссылок в функции.
Детали для запоминания:
Первое правило ссылок предотвращает гонки данных. Что такое гонки данных? Это когда чтение переменной одновременно происходит с записью в эту переменную, из-за чего возможно Undefined Behaviour (UB). Такое часто происходит в многопоточных программах.
Второе правило для ссылок предотвращает некорректное их использование, когда она ссылается на несуществующие данные ( висячие указатели, dangling pointers ).