زبان برنامهنویسی راست
پیشگفتار
مقدمه
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.
اشارهگر (Pointer)های هوشمند
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"
Light
Rust
Coal
Navy
Ayu
The Rust Programming Language
ضمیمه
بخشهای زیر حاوی مطالب مرجعی هستند که ممکن است در مسیر یادگیری Rust برای شما مفید باشند.