Rust ناایمن

زبان Rust دو بخش دارد:

  • در Safe Rust: حافظه ایمن یا memory safe، هیچ رفتار تعریف نشده‌ای امکان پذیر نیست.
  • در Unsafe Rust: در صورت نقض پیش‌شرط‌ها، می‌تواند باعث رفتار نامشخص شود.

ما عمدتاً safe Rust را در این دوره دیدیم، اما مهم است که بدانیم Unsafe Rust چیست.

کد ناامن معمولا کوچک و ایزوله است و صحت آن باید به دقت مستند شود. معمولاً در یک لایه انتزاعی ایمن پیچیده می‌شود.

این Unsafe Rust به شما امکان دسترسی به پنج قابلیت جدید را می‌دهد:

  • اشاره‌گرهای خام.
  • به متغیرهای mutable static variable تغییر دسترسی دهید.
  • به فیلدهای union دسترسی پیدا کنید.
  • توابع unsafe، از جمله توابع extern را فراخوانی کنید.
  • ویژگی‌های unsafe را اجرا کنید.

در ادامه به طور خلاصه به قابلیت‌های unsafe می‌پردازیم. برای جزئیات کامل، لطفاً به Chapter 19.1 in the Rust Book و Rustonomicon.

This slide should take about 5 minutes.

همینطور Unsafe Rust به این معنی نیست که کد نادرست است. این بدان معنی است که توسعه‌دهندگان برخی از ویژگی‌های ایمنی کامپایلر را خاموش کرده‌اند و باید کد صحیح را خودشان بنویسند. این بدان معناست که کامپایلر دیگر قواعد ایمنی Rust را اجرا نمی‌کند.