Rust eo "empréstimo"de propriedade
free()
da linguagem C.Mesmo com suas regras mais estritas, Rust oferece certa flexibilidade com recursos extras de gerenciamento.
Um desses recursos é o empréstimo de propriedade, ou 소유권 차용 em inglês.
Temporariamente, um valor pode ser emprestado para outra variável durante seu ciclo de vida sem a necessidade da troca de proprietário.
Isso é possível com o que Rust chama de referência, muito parecido com um
pointer
de C/C++, uma referência aponta para o endereço de memória onde esta o valor armazenado, a diferença para um pointer
é que a referência semper aponta para um endereço válido.Isso é feito com o uso do
&
(conhecido como E comercial ou ampersand em inglês).Funciona assim, vamos declarar a função main, com a variável
i
que contém a String "String exemplo", realizamos a impressão de i
e fechamos o escopo.Sem realizar o empréstimo de
i
, usando o &
, não seria possível realizar a impressão de i
dentro da função empréstimo.fn main() {
let i = String::from("String exemplo");
emprestimo(&i);
println!("Valor em main: {}", i);
}
fn emprestimo(i: &String) {
println!("Valor emprestado: {}", i);
}
Porém, como indicamos isso com
&
, então é possível compilar e ter a impressão de i
realizada em ambas funções sem a necessidade da troca de proprietário (i
).Sem realizar esse empréstimo de valor, o compilador já nos orientaria o norte correto.
Uma dificuldade que pode ser encontrada nesse tipo de empréstimo do valor é não ser possível a alteração do valor em questão, por padrão, variáveis são imutáveis em Rust, logo referências também serão imutáveis.
Por isso, assim como é possível tornar variáveis mutáveis, referências idem, com o uso da keyword
mut
junto a &
.Tornando uma referência mutável, ao emprestar o valor, o proprietário temporário pode exclusivamente alterar esse valor.
Importantíssimo notar que enquanto tenho uma referência mutável ativa, não se pode ter qualquer outro tipo de empréstimo no dado valor.
"데이터 경쟁"에 대한 사전 오류가 발생했습니다. 문제는 프로그램 다중화에 대한 문제가 아니라 프로세스의 정확성과 용맹함의 비교와 비교, 결과에 대한 문제가 있다는 것입니다.
Uma data race seria duas tarefas que escrevem um valor na nossa variável
i
, digamos 30 na tarefa A, e 5 na tarefa B, e depois realizam um cálculo que retorna o valor de i
.O valor retornado pod ser tanto 30, como 5, ou até então um valor quebrado.
녹이 발생하지 않도록 보호하고 보호할 수 있는 보호 장치가 존재하지 않으면 가치가 결정되지 않습니다.
Reference
이 문제에 관하여(Rust eo "empréstimo"de propriedade), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/guithomas/rust-e-emprestimo-de-propriedade-cb2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)