Corda estática de ferrugem

Corda estática de ferrugem
Uma variável estática refere -se a um tipo de variável que possui um local de memória fixa. Eles são semelhantes a variáveis ​​constantes, exceto elas representam um local de memória no programa.

Variáveis ​​estáticas na ferrugem podem ter um destruidor, mas esse destruidor nunca é executado, pois elas têm uma vida estática. Isso significa que eles nunca ficam sem escopo em toda a vida do programa em que são declarados.

Nota Se uma variável for declarada como estática dentro de uma função, o escopo, o que significa que a acessibilidade da variável não é afetada. Portanto, partes do programa fora da função não podem acessar seu valor. No entanto, seu escopo não é descartado quando o escopo da função morre.

Para saber mais sobre queda e destruidores em ferrugem, consulte nosso tutorial sobre destruidores de ferrugem.

Pontos a serem observados

A seguir, alguns pontos importantes a serem observados ao usar variáveis ​​estáticas na ferrugem:

Variáveis ​​estáticas devem estar seguras. Portanto, o tipo especificado deve implementar o traço de sincronização. Definir uma variável como estática com um tipo que não é seguro de linha pode levar a condições de corrida de dados.

Variáveis ​​estáticas podem referir apenas outras variáveis ​​estáticas por apenas referência.

Constantes ou estática

Embora as variáveis ​​estáticas não sejam uma substituição por variáveis ​​constantes, Rust recomenda sempre favorecer as constantes, a menos que:

  1. Você precisa armazenar grandes quantidades de dados.
  2. Você precisa de mutabilidade interior
  3. Você precisa de um único endereço de variável estática.

Ferrugem Criar variável estática

Existem duas maneiras principais de criar uma variável estática na ferrugem. O primeiro é criar um valor constante com uma declaração estática.

Um código de exemplo é como mostrado abaixo:

Valor estático: i32 = 10;

O segundo método para criar um valor estático é criar uma string literal com o tipo & 'static str. Exemplo é como mostrado:

Deixe olá: & 'static str = "hello";

Lembre -se de que o tipo de str em ferrugem é um tipo de literais de cordas definidas como & 'static str.

Como os literais de cordas são fatias de uma corda, eles são armazenados no binário final e, portanto, uma vida estática.

Como os tipos de string em ferrugem podem não viver na vida inteira do programa, não é possível converter um tipo de string em uma string estática. No entanto, você pode criar uma fatia de string que é estática como show no exemplo abaixo:

Deixe String: String = "Hello World".to_owned ();
Seja str_slice: & str = & string […];

OBSERVAÇÃO: Embora você possa ter um valor estático mutável, a ferrugem não pode provar referências ou corridas de dados penduradas ao acessar uma variável estática mutável. A ferrugem geralmente desencoraja usando variáveis ​​mutáveis ​​estáticas.

Conclusão

Este pequeno artigo tenta discutir o conceito de variáveis ​​estáticas na ferrugem. Lembre -se de que este guia não pode servir como uma referência à estática em ferrugem. Verifique a documentação para entender como está estático em ferrugem.