O que são semânticas de movimento no Rust?
No Rust, existem duas possibilidades de fazer uma referência
Pedir emprestado, ou seja, faça uma referência, mas não permita a alteração do destino de referência. o&
O operador pede emprestada a propriedade de um valor.
Emprestar mutuamente, ou seja, faça uma referência para alterar o destino. o&mut
O operador empresta mutuamente a propriedade de um valor.
oDocumentação de ferrugem sobre regras de empréstimo diz:
Primeiro, qualquer empréstimo deve durar um escopo não superior ao do proprietário. Segundo, você pode ter um ou outro desses dois tipos de empréstimos, mas não os dois ao mesmo tempo:
uma ou mais referências (&T
) a um recurso,exatamente uma referência mutável (&mut T
)Acredito que tomar uma referência é criar um ponteiro para o valor e acessá-lo pelo ponteiro. Isso pode ser otimizado pelo compilador se houver uma implementação equivalente mais simples.
No entanto, eu não entendo o quemover meios e como é implementado.
Para tipos que implementam oCopy
característica significa copiar, por exemplo atribuindo a estrutura membro a partir da fonte ou ummemcpy()
. Para estruturas pequenas ou primitivas, esta cópia é eficiente.
E paramover?
Esta pergunta não é uma duplicata deO que são semânticas de movimento? porque Rust e C ++ são linguagens diferentes e a semântica de movimento é diferente entre os dois.