const
Constants are evaluated at compile time and their values are inlined wherever they are used:
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++
عمل میکند. - با اینکه خیلی رایج نیست که اگر کسی به یک یک مقدار ثابت که در زمان اجرا ارزیابی میشود از
const
استفاده کند اما مفید تر و ایمن تر از استفادهstatic
ها هستند.