متغیرهای ثابت قابل تغییر

خواندن یک متغیر استاتیک تغییرناپذیر بی‌خطر است:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

با‌این‌حال، از آنجایی که شرایط رقابتی داده‌ها ممکن است رخ دهد، خواندن و نوشتن متغیرهای mutable static ناامن است:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Speaker Notes

This slide should take about 5 minutes.
  • برنامه در اینجا امن است زیرا single-thread است. با این حال، کامپایلر Rust محافظه کار است و بدترین‌ها را در نظر می‌گیرد. unsafe را حذف کنید و ببینید چگونه کامپایلر توضیح می‌دهد که جهش یک static از چندین thread یک رفتار تعریف نشده است.

  • استفاده از یک static قابل تغییر (mutable) به طور کلی ایده بدی است، اما مواردی وجود دارد که ممکن است در کدهای سطح پایین no_std منطقی باشد، مانند اجرای یک heap allocator یا کار با برخی از APIهای مربوط به زبان C.