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
.