Las variables estáticas en la óxido pueden tener un destructor, pero ese destructor nunca se ejecuta, ya que tienen una vida estática. Esto significa que nunca se quedan sin alcance en toda la vida del programa en el que se declaran.
Nota Si una variable se declara como estática dentro de una función, el alcance, lo que significa que la accesibilidad de la variable no se ve afectada. Por lo tanto, las partes del programa fuera de la función no pueden acceder a su valor. Sin embargo, su alcance no se cae cuando el alcance de la función muere.
Para obtener más información sobre Drop and Destructors in Rust, consulte nuestro tutorial sobre destructores de óxido.
Puntos a tener en cuenta
Los siguientes son algunos puntos importantes a tener en cuenta al usar variables estáticas en Rust:
Las variables estáticas deben ser seguras de hilo. Por lo tanto, el tipo especificado debe implementar el rasgo de sincronización. Establecer una variable como estática con un tipo que no es seguro de subprocesos puede conducir a condiciones de carrera de datos.
Las variables estáticas solo pueden referir otras variables estáticas solo por referencia.
Constantes o estáticos
Aunque las variables estáticas no son una sustitución de variables constantes, Rust recomienda siempre favorecer a las constantes primero a menos que:
Óxido crear variable estática
Hay dos formas principales de crear una variable estática en óxido. El primero es crear un valor constante con una declaración estática.
Un código de ejemplo es como se muestra a continuación:
Valor estático: i32 = 10;
El segundo método para crear un valor estático es crear una cadena literal con type & 'stat str. El ejemplo es como se muestra:
Sea hola: & 'static str = "hola";
Tenga en cuenta que el tipo STR en óxido es un tipo de literales de cadena definidos como y 'strat str.
Dado que los literales de cadena son rebanadas de una cadena, se almacenan en el binario final y, por lo tanto, una vida estática.
Dado que los tipos de cadena en Rust no viven en la vida útil del programa, no es posible convertir un tipo de cadena en una cadena estática. Sin embargo, puede crear una porción de cadena que es estática como se muestra en el ejemplo a continuación:
Let String: String = "Hello World".to_owned ();
Let str_slice: & str = & string […];
NOTA: Aunque puede tener un valor estático mutable, el óxido no puede probar referencias colgantes o razas de datos al acceder a una variable estática mutable. El óxido generalmente desalienta el uso de variables mutables estáticas.
Conclusión
Este breve artículo intenta discutir el concepto de variables estáticas en el óxido. Tenga en cuenta que esta guía no puede servir como referencia a las estadísticas en la óxido. Verifique la documentación para comprender cómo funciona la estática en Rust.