const
Константи обчислюються під час компіляції, а їхні значення вставляються всюди, де вони використовуються:
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:?}"); }
Відповідно до Книги Rust RFC вони підставляються під час використання.
Лише функції з позначкою const
можна викликати під час компіляції для створення значень const
. Однак функції const
можна викликати під час виконання.
- Зауважте, що
const
поводиться семантично подібно доconstexpr
C++. - Не так часто виникає потреба у константі, що обчислюється під час виконання, але це корисно та безпечніше, ніж використовувати static.