En Rust, las constantes son valores inmutables que no cambian durante la ejecución del programa. Estas se pueden declarar utilizando las palabras clave const
o static
. Aunque ambas definen valores constantes, tienen diferencias importantes en su comportamiento y uso.
const
La palabra clave const
se usa para declarar constantes en tiempo de compilación. Estas deben ser inicializadas con un valor conocido en tiempo de compilación y no pueden depender de resultados calculados en tiempo de ejecución.
Sintaxis:
const NOMBRE_CONSTANTE: Tipo = valor;
Ejemplo:
const PI: f64 = 3.1416;
const MAX_USUARIOS: u32 = 1000;
fn main() {
println!("El valor de PI es: {}", PI);
println!("Máximo número de usuarios: {}", MAX_USUARIOS);
}
Salida:
El valor de PI es: 3.1416
Máximo número de usuarios: 1000
static
La palabra clave static
se utiliza para declarar valores estáticos en memoria. Estos valores también son inmutables por defecto, pero viven en una ubicación fija en memoria durante toda la ejecución del programa.
Sintaxis:
static NOMBRE_CONSTANTE: Tipo = valor;
Ejemplo:
static BIENVENIDA: &str = "Hola, mundo";
fn main() {
println!("{}", BIENVENIDA);
}
Salida:
Hola, mundo
const
y static
Característica |
const
|
static
|
---|---|---|
Almacenamiento | No ocupa memoria directa, se inyecta en el código. | Se almacena en una dirección fija en memoria. |
Inmutabilidad | Siempre inmutable. |
Puede ser mutable con static mut .
|
Tiempo de inicialización | En tiempo de compilación. | Puede contener referencias estáticas. |
Uso | Valores constantes usados en cálculos. | Valores compartidos globalmente. |
static mut
En casos especiales, puedes usar static mut
para declarar valores globales mutables. Esto debe manejarse con cuidado y generalmente requiere uso de bloques unsafe.
Ejemplo:
static mut CONTADOR: u32 = 0;
fn main() {
unsafe {
CONTADOR += 1;
println!("Contador: {}", CONTADOR);
}
}
1. Usa const para valores inmutables que no dependen de cálculos en tiempo de ejecución.
2. Usa static para valores compartidos que necesitan una dirección fija en memoria.
3. Evita usar static mut a menos que sea absolutamente necesario.
Para más detalles, consulta la documentación oficial de Rust.
Jorge García
Fullstack developer