Почему нельзя вызывать метод у экземпляра &Struct?

Вопрос: Почему я не могу вызвать метод у &Bucket вместо Bucket?
  • 16 сентября 2023 г. 22:06
Ответы на вопрос 1
Структуры (Struct) в языке программирования Rust имеют свойство передвижения (move). Это означает, что когда вы передаете экземпляр структуры в функцию или метод, он перемещается внутрь функции или метода, а внешний экземпляр больше не может использоваться после этого вызова.

Когда вы создаете ссылку &Bucket на экземпляр структуры Bucket, это означает, что вы создаете ссылку на этот экземпляр, а не на саму структуру. Из-за передвижения, структура Bucket больше не доступна по этой ссылке, и поэтому нельзя вызывать методы непосредственно на этой ссылке.

Чтобы вызвать метод у экземпляра структуры, необходимо иметь доступ к самой структуре, а не только к ссылке на нее. Если вы хотите вызвать метод у экземпляра структуры, вы должны использовать саму структуру (Bucket), а не ссылку на нее (&Bucket).
Похожие вопросы