const

Constantes são avaliadas em tempo de compilação e seus valores são expandidos no próprio local (inlined) onde quer que sejam usados:

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:?}");
}

De acordo com o Rust RFC Book, eles sĂŁo expandidos no prĂłprio local (inline) quando utilizados.

Somente funçÔes marcadas como const podem ser chamadas em tempo de compilação para gerar valores const. As funçÔes const podem, entretanto, ser chamadas em tempo de execução.

  • Mencione que const se comporta semanticamente de maneira similar ao constexpr de C++.
  • NĂŁo Ă© muito comum que alguĂ©m precise de uma constante avaliada em tempo de execução, mas Ă© Ăștil e mais seguro do que usar uma variĂĄvel estĂĄtica.