const
Las variables constantes se evalúan en tiempo de compilación y sus valores se insertan donde sean utilizados:
const DIGEST_SIZE: usize = 3; const ZERO: Option<u8> = Some(42); fn compute_digest(text: &str) -> [u8; DIGEST_SIZE] { let mut digest = [ZERO.unwrap_or(0); DIGEST_SIZE]; for (idx, &b) in text.as_bytes().iter().enumerate() { digest[idx % DIGEST_SIZE] = digest[idx % DIGEST_SIZE].wrapping_add(b); } digest } fn main() { let digest = compute_digest("Hello"); println!("digest: {digest:?}"); }
Según el libro Rust RFC Book, se insertan cuando se utilizan.
Sólo se pueden llamar a las funciones marcadas como const
en tiempo de compilación para generar valores const
. Sin embargo, las funciones const
se pueden llamar en runtime.
- Menciona que
const
se comporta semánticamente de forma similar aconstexpr
de C++ - No es muy habitual que se necesite una constante evaluada en runtime, pero es útil y más seguro que usar una estática.