static

المتغيرات الثابتة (Static variables) ستظل موجودة طوال تنفيذ البرنامج بالكامل، وبالتالي لن تتحرك:

static BANNER: &str = "Welcome to RustOS 3.14";

fn main() {
    println!("{BANNER}");
}

كما هو مذكور في Rust RFC Book، هذه المتغيرات لا يتم تضمينها عند الاستخدام ولها موقع ذاكرة فعلي مرتبط بها. هذا مفيد للكود غير الآمن (unsafe) والمضمن (embedded)، ويظل المتغير موجودًا طوال تنفيذ البرنامج بالكامل. عندما لا يكون للقيمة ذات النطاق العالمي سبب للحاجة إلى هوية الكائن (object identity)، يفضل استخدام const بشكل عام.

This slide should take about 5 minutes.
  • static مشابه للمتغيرات العالمية القابلة للتغيير (mutable global variables) في C++.
  • static يوفر هوية الكائن (object identity): عنوان في الذاكرة وحالة كما هو مطلوب من الأنواع ذات القابلية للتغيير الداخلي (interior mutability) مثل Mutex<T>.

المزيد لاستكشافه

نظرًا لأن المتغيرات الثابتة (static variables) يمكن الوصول إليها من أي خيط (thread)، يجب أن تكون Sync. القابلية للتغيير الداخلي (Interior mutability) ممكنة من خلال Mutex، (atomic) أو ما شابه.

يمكن إنشاء البيانات المحلية للخيط (Thread-local data) باستخدام الماكرو std::thread_local.