const

Sabitler (constants) derleme zamanında (compile-time) değerlendirilir ve değerleri kullanıldıkları her yerde satır içi (inline) olarak belirtilir:

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 Book'a göre bunlar kullanım sırasında satır içidir (inline).

Sadece const olarak işaretlenen fonksiyonlar derleme zamanında çağrılarak const değerler üretilebilir. Ancak const fonksiyonlar çalışma zamanında da çağrılabilir.

  • const'un C++'ın constexpr'ına anlamsal olarak benzer davrandığını belirtin
  • Çalışma zamanında değerlendirilen (evaluate) bir sabite (constant) ihtiyaç duyulması çok yaygın bir durum değildir, ancak statik kullanmaktan daha yararlı ve daha emniyetlidir.