یکی از جذابترین ویژگیهای Rust اینه که خیلی از خطاهای خطرناک حافظه رو قبل از اجرای برنامه پیدا میکنه.
اما گاهی اوقات باید کارهایی بکنیم که Compiler نمیتونه صحتشون رو اثبات کنه؛ اینجاست که "unsafe" وارد میشه. 👀
ا🔥 "unsafe" دقیقاً چیه؟
با "unsafe" به Rust نمیگیم:
ا««Memory Safety رو خاموش کن!»»
بلکه میگیم:
««من میدونم این قسمت چه کاری انجام میده و مسئولیت رعایت قوانین Safety رو خودم قبول میکنم.»»
🧠 چرا اصلاً Rust به "unsafe" نیاز داره؟
چون بعضی کارهای سطح پایین بدون unsafe عملاً ممکن نیست.
مثلاً:
🔌 ارتباط با C/C++ از طریق FFI
🖥 کار با سیستمعامل
⚙️ پیادهسازی Runtimeها
🚀 بهینهسازیهای سطح پایین
📦 حتی خود کتابخانههای استاندارد Rust هم در بعضی قسمتها از "unsafe" استفاده میکنن.
🎨 به طور مثال:
unsafe {
// نمونه: FFI call
libc::printf(c"سلام\n".as_ptr() as *const _);
}🦀 پس Rust کاملاً Memory Safe نیست؟
دقیقتر بگیم:
اRust در کد Safe خودش Memory Safety رو تضمین میکنه.
اما "unsafe" یک خروجی برای کارهای سطح پایین فراهم میکنه؛ جایی که برنامهنویس میتونه مسئولیت بعضی تضمینها رو خودش بر عهده بگیره.
و این دقیقاً یکی از دلایلیه که Rust هم میتونه:
⚡️ا Performance بالا داشته باشه
🧠 کنترل سطح پایین بده
🛡 و در عین حال Safety قدرتمندی ارائه کنه.
🦀ا"unsafe" قدرت زیادی به برنامه نویس میده؛ ولی با این قدرت، مسئولیت هم همراهش میاد.
⚠️و غلط استفاده کردن از unsafe میتونه به undefined behavior منجر شه
آیا تا حالا unsafe کد نوشتی؟ کجا استفاده کردی؟ نظر شما درباره unsafe چیه؟ به ما در کامنت ها بگید🤗
#Rust #unsafe
𝗖𝗵𝗮𝗻𝗻𝗲𝗹 • @Programers_Cafe
𝗚𝗿𝗼𝘂𝗽 • @IRdeveloperchat

