- زبان برنامهنویسی راست
- پیشگفتار
- مقدمه
- 1. شروع کار
- 1.1. نصب
- 1.2. سلام، دنیا!
- 1.3. سلام، Cargo!
- 2. برنامهنویسی یک بازی حدس زدن
- 3. مفاهیم رایج برنامهنویسی
- 3.1. متغیرها و تغییرپذیری
- 3.2. انواع داده
- 3.3. توابع
- 3.4. کامنتها
- 3.5. کنترل جریان
- 4. درک مالکیت
- 4.1. مالکیت چیست؟
- 4.2. ارجاعات و قرض گرفتن
- 4.3. نوع Slice
- 5. استفاده از Structها برای سازماندهی دادههای مرتبط
- 5.1. تعریف و نمونهسازی Structها
- 5.2. یک برنامه نمونه با استفاده از Structها
- 5.3. متد
- 6. شمارندهها و تطابق الگو
- 6.1. تعریف یک Enum
- 6.2. ساختار جریان کنترل match
- 6.3. جریان کنترل مختصر با if let و let else
- 7. مدیریت پروژههای در حال رشد با پکیجها، جعبهها (crates)، و ماژولها
- 7.1. پکیجها و جعبهها (crates)
- 7.2. تعریف ماژولها برای کنترل دامنه و حریم خصوصی
- 7.3. مسیرها برای ارجاع به یک آیتم در درخت ماژول
- 7.4. وارد کردن مسیرها با کلمه کلیدی use
- 7.5. جداسازی ماژولها به فایلهای مختلف
- 8. مجموعههای رایج
- 8.1. ذخیره لیست مقادیر با بردارها
- 8.2. ذخیره متن رمزگذاریشده UTF-8 با رشتهها
- 8.3. ذخیره کلیدها با مقادیر مرتبط در نقشههای هش
- 9. مدیریت خطاها
- 9.1. خطاهای غیرقابل بازیابی با panic!
- 9.2. خطاهای قابل بازیابی با Result
- 9.3. آیا از panic! استفاده کنیم یا نه؟
- 10. انواع جنریک، صفتها، و طول عمرها
- 10.1. انواع داده جنریک
- 10.2. صفتها: تعریف رفتارهای مشترک
- 10.3. اعتبارسنجی ارجاعات با طول عمرها
- 11. نوشتن تستهای خودکار
- 11.1. چگونه تست بنویسیم
- 11.2. کنترل نحوه اجرای تستها
- 11.3. سازماندهی تستها
- 12. یک پروژه I/O: ساخت یک برنامه خط فرمان
- 12.1. پذیرش آرگومانهای خط فرمان
- 12.2. خواندن یک فایل
- 12.3. بازسازی برای بهبود ماژولاریت و مدیریت خطا
- 12.4. توسعه قابلیتهای کتابخانه با توسعه مبتنی بر تست
- 12.5. کار با متغیرهای محیطی
- 12.6. نوشتن پیامهای خطا به خروجی خطا به جای خروجی استاندارد
- 13. ویژگیهای زبانهای تابعی: Iteratorها و Closureها
- 13.1. Closureها: توابع ناشناخته که محیط خود را میگیرند
- 13.2. پردازش یک سری آیتم با Iteratorها
- 13.3. بهبود پروژه I/O ما
- 13.4. مقایسه عملکرد: حلقهها در مقابل Iteratorها
- 14. بیشتر درباره Cargo و Crates.io
- 14.1. سفارشیسازی بیلدها با پروفایلهای انتشار
- 14.2. منتشر کردن یک crate در Crates.io
- 14.3. محیطهای کاری Cargo
- 14.4. نصب باینریها از Crates.io با cargo install
- 14.5. گسترش Cargo با دستورات سفارشی
- 15. اشارهگرهای هوشمند (Smart Pointers)
- 15.1. استفاده از Box<T> برای اشاره به دادهها در Heap
- 15.2. رفتار اشارهگر (Pointer)های هوشمند مانند ارجاعات معمولی با صفت Deref
- 15.3. اجرای کد هنگام پاکسازی با صفت Drop
- 15.4. Rc<T>، اشارهگر (Pointer) هوشمند با شمارش ارجاعات
- 15.5. RefCell<T> و الگوی تغییرپذیری داخلی
- 15.6. چرخههای ارجاع میتوانند باعث نشت حافظه شوند
- 16. همزمانی بدون ترس
- 16.1. استفاده از نخها برای اجرای همزمان کد
- 16.2. استفاده از پیامرسانی برای انتقال داده بین نخها
- 16.3. همزمانی با وضعیت مشترک
- 16.4. همزمانی قابل گسترش با صفتهای Sync و Send
- 17. Async و Await
- 17.1. Futures و نحو Async
- 17.2. همزمانی با Async
- 17.3. کار با تعداد دلخواهی از Futures
- 17.4. Streams
- 17.5. بررسی عمیق صفتها برای Async
- 17.6. Futures، Tasks، و Threads
- 18. ویژگیهای برنامهنویسی شیگرا در Rust
- 18.1. ویژگیهای زبانهای شیگرا
- 18.2. استفاده از صفتهای شیگرا برای مقادیر از تایپهای مختلف
- 18.3. پیادهسازی یک الگوی طراحی شیگرا
- 19. الگوها و تطبیق
- 19.1. تمام مکانهایی که میتوان از الگوها استفاده کرد
- 19.2. قابلیت رد: آیا ممکن است یک الگو با مقدار مطابقت نداشته باشد؟
- 19.3. نحو الگوها
- 20. ویژگیهای پیشرفته
- 20.1. Rust ناایمن
- 20.2. Traits پیشرفته
- 20.3. تایپهای پیشرفته
- 20.4. توابع و Closures پیشرفته
- 20.5. ماکروها
- 21. پروژه نهایی: ساخت یک وبسرور چندنخی
- 21.1. ساخت یک وبسرور single-threaded
- 21.2. تبدیل وبسرور تکنخی به وبسرور چندنخی
- 21.3. خاموشی ملایم و پاکسازی
- 22. ضمیمه
- 22.1. الف - کلمات کلیدی
- 22.2. ب - عملگرها و نمادها
- 22.3. ج - صفتهای قابل اشتقاق
- 22.4. د - ابزارهای توسعه مفید
- 22.5. ه - نسخهها
- 22.6. و - ترجمههای کتاب
- 22.7. ی - چگونه Rust ساخته میشود و "Nightly Rust"