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 را اجرا نمیکند.