O que é propriedade?
Tradicionalmente, existem duas maneiras fundamentais de gerenciar memórias. O primeiro é os colecionadores de lixo; É usado principalmente em idiomas de alto nível que abstraem o conceito de gerenciamento de memória do programador.
O segundo é o gerenciamento de memória "manual", onde o programador define explicitamente o uso da memória. Embora forneça controle, deixa muito espaço para atirar no pé.
A ferrugem assume uma abordagem alternativa chamada propriedade e empréstimos. A propriedade é um novo "construto" que define um valor tem seu proprietário.
A seguir, são apresentadas as regras de propriedade da ferrugem:
Para entender melhor a propriedade da ferrugem, discutimos alguns conceitos e exemplos.
Escopo
Podemos definir o escopo como um intervalo sob o qual um valor especificado vive. O escopo desempenha um papel importante em propriedade e empréstimos.
Cada variável está vinculada por seu escopo. Nesse caso, um escopo refere -se a um bloco, fechado por um par de aparelhos encaracolados.
Considere o seguinte programa de exemplo:
fn main ()No programa de exemplo anterior, temos duas funções: a função principal e a função new_func.
Dentro da função principal, declaramos uma nova variável chamada Long_life. Também criamos um novo escopo e declaramos uma nova variável chamada Short_life.
Se você executar o código anterior, o compilador de ferrugem lhe dirá que as variáveis, Short_life e Long_life, não existem nesse escopo.
Isso ocorre porque a variável Short_life é declarada em um novo escopo. Quando esse escopo termina, a variável é descartada. Isso significa que a variável Short_life não existe fora do aparelho encaracolado.
O mesmo caso se aplica à variável long_life. É acessível apenas na função principal. Tentar acessá -lo em outra função não é permitido.
Shadowing
Shadowing variável é um caso típico. Refere -se a um recurso em que a primeira declaração variável é "substituída" ou sombreada por outro.
Pegue o seguinte código de exemplo:
fn main ()Aqui, temos uma variável chamada var1 definida para 10. Em seguida, sombreamos declarando a variável com o mesmo nome e definimos para um novo valor.
Isso deve imprimir:
Nota: Não confunda sombreamento com mutabilidade. Verifique nosso tutorial sobre a mutabilidade da ferrugem para aprender mais.
Transferir propriedade
Rust nos permite transferir a propriedade do valor usando operações de cópia ou movimentação. Pegue o seguinte código de exemplo:
fn main ()O exemplo anterior declara uma variável, var1 e atribui o valor 10. Também declaramos uma nova variável, var2, e atribuímos a Var1.
Quando isso acontecer, a ferrugem criará uma nova cópia do valor e a atribui a var2. Isso significa que ambas as variáveis não compartilham o valor e cada uma ocupa seu próprio espaço de memória.
O que acontece quando tentamos realizar a operação anterior em um valor com um tamanho de memória não determinístico?
Veja um tipo de string, por exemplo. Como pode crescer ou encolher, não há tamanho de memória pré-determinado. Portanto, não implementa o traço de cópia:
Seja str1 = string :: de ("oi");Executar a mesma operação força o compilador de ferrugem a mover o valor de str1 para str2. Como um valor pode ter apenas um proprietário de cada vez, a variável str1 não é mais válida. Isso fará com que o compilador retorne um erro se tentarmos acessá -lo:
Conclusão
Uma das razões pelas quais Rustaceans adora a linguagem de programação de ferrugem é a propriedade. É um novo recurso que oferece mais flexibilidade e segurança ao mesmo tempo. Compreender como funciona pode ser benéfico para criar aplicativos rápidos e eficientes. Além disso, as regras de propriedade e conceitos foram discutidos. Esperamos que você tenha achado este artigo útil. Verifique os outros artigos de dica do Linux para obter mais dicas e informações.