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 a constexpr 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.