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).