const
يتم تقييم الثوابت (Constants) في وقت الترجمة (compile time) ويتم تضمين قيمها في أي مكان يتم استخدامها فيه:
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 يتم تضمين هذه القيم عند الاستخدام.
فقط الدوال المميزة بـ const يمكن استدعاؤها في وقت الترجمة (compile time) لتوليد قيم const. ومع ذلك، يمكن استدعاء الدوال const في وقت التشغيل (runtime).
- اذكر أن
constيتصرف بشكل مشابه دلاليًا لـconstexprفي C++. - ليس من الشائع جدًا أن يحتاج المرء إلى ثابت يتم تقييمه في وقت التشغيل (runtime evaluated constant)، ولكنه مفيد وأكثر أمانًا من استخدام ثابت (static).