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 aoconstexpr
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.