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 FILL_VALUE: u8 = calculate_fill_value();

const fn calculate_fill_value() -> u8 {
    if DIGEST_SIZE < 10 { 42 } else { 13 }
}

fn compute_digest(text: &str) -> [u8; DIGEST_SIZE] {
    let mut digest = [FILL_VALUE; 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.

This slide should take about 10 minutes.
  • const’un C++’ın constexpr’ına anlamsal olarak benzer davrandığını belirtin