راست

راست از صفر تا برنامه‌نویس

از صفر تا یک برنامه‌نویسِ واقعیِ Rust — با تمرین‌های زنده‌ای که داورِ واقعی می‌سنجد.

۱۵۶درس
۱۱۰تمرین
۳۹ساعت
۹۴٪رضایت
مشاهده‌ی سرفصل‌ها
درباره‌ی دوره

چه چیزی یاد می‌گیری؟

راست از صفر تا برنامه‌نویس

این دوره تو را به یک برنامه‌نویسِ واقعیِ Rust تبدیل می‌کند — با همان عمقِ دوره‌های پرچم‌دارِ پایتون و Go ما، اما با شخصیت و قواعدِ خودِ Rust. مسیر را دقیقاً به ترتیبِ آموزشیِ «کتابِ راست» می‌پیماییم: از اولین خطِ کد شروع می‌کنیم و در قلبِ تپنده‌ی زبان کُند و عمیق پیش می‌رویم.

چه یاد می‌گیری؟

  • مدلِ کامپایل/اجرا، fn main، println! و خواندن از ورودی
  • متغیرها، تغییرپذیری، shadowing و تایپ‌های پایه با فرمتِ قطعیِ اعشار
  • مالکیت، انتقال (move)، قرض‌گیری و خودِ borrow checker — یک ماژولِ کاملِ مستقل
  • طول‌عمرها (lifetimes) در ماژولِ مستقلِ خودشان
  • استراکت‌ها و متدها (impl)، enumها و matchِ جامع و الگوگذاری
  • Option و Result و اپراتورِ ?، خطاهای سفارشی و Box<dyn Error>
  • کالکشن‌ها: Vec، HashMap/BTreeMap، HashSet/BTreeSet و VecDeque
  • رشته‌ها: String در برابر str&، chars/bytes و parse
  • تِرِیت‌ها، جنریک‌ها، کران‌ها و trait objectها
  • closureها و iteratorها و سبکِ تابعی
  • اشاره‌گرهای هوشمند (Box، Rc، RefCell)، ماژول‌ها، use و ماکروهای macro_rules!
  • هم‌روندیِ کاملاً قطعی با thread، کانال‌های mpsc و Arc<Mutex<_>>

برای چه کسی؟

برای هر کسی که می‌خواهد از صفر برنامه‌نویسِ Rust شود؛ به دانشِ قبلیِ Rust نیازی نیست. در پایان با دو ماژولِ پروژه‌ی واقعی — ابزارهای متن و داده، و پارسرها و مفسرها و ماشین‌های حالت — همه‌چیز را در ابزارهای کاربردی به‌هم می‌بافی.

چرا این دوره؟

هر تمرین یک برنامه‌ی کاملِ fn main است که توسط داورِ ورودی→خروجیِ استاندارد ارزیابی می‌شود؛ به همین دلیل «قطعیّتِ خروجی» را از همان درس‌های نخست تمرین می‌کنی. ما تماماً با Rust 1.68.2 و فقط کتابخانه‌ی استاندارد کار می‌کنیم و هر چیزی که به crateِ بیرونی نیاز دارد (regex، serde، tokio، clap، شبکه، دیتابیس) عمداً خارج از دامنه است — این یک فرصت است: JSON و CSV را «با دست» پارس می‌کنی و خطا را با Result و ? مدیریت می‌کنی، دقیقاً به همان شیوه‌ی اصیل (idiomatic) که کتابِ راست آموزش می‌دهد. در پایان مثلِ یک Rustaceanِ واقعی فکر می‌کنی: داده را با مالکیت مدل می‌کنی، خطا را با تایپ مدیریت می‌کنی، و رفتار را با تِرِیت انتزاع می‌کنی.

۲۴ سرفصل ساخت‌یافته
۱۱۰ تمرین عملی
اجرا و بازخورد آنی در مرورگر
گواهی پایان دوره
ساخته‌ی تیم آموزشی دینا کد

این دوره را تیم آموزشی دینا کد طراحی کرده — با تمرکز بر «یادگیری با انجام‌دادن»: هر مفهوم با تمرین عملی و داوری خودکار که کدت را همان لحظه می‌سنجد، و سرفصل‌هایی که بر پایه‌ی مسیر واقعی یک برنامه‌نویس چیده شده‌اند.

سرفصل‌ها

سرفصل‌های دوره

۲۴ سرفصل · ۱۵۶ درس · ۱۱۰ تمرین

۱

اولین برنامه‌ها: مدلِ کامپایل/اجرا، fn main و چاپ

۶ درس
  • Rust چیست و داور چطور کدت را اجرا می‌کند؟پیش‌نمایش رایگان
  • سلام دنیاپیش‌نمایش رایگانتمرین
  • این کد آماده است: اولین برنامه‌ی کاملپیش‌نمایش رایگانتمرین
  • چاپِ سه‌گانه و قالب‌بندیِ سادهپیش‌نمایش رایگانتمرین
  • println! و formatِ مقدارهاپیش‌نمایش رایگانتمرین
  • قراردادِ ورودی→خروجیِ استاندارد و چطور تمرین‌ها نمره می‌خورندپیش‌نمایش رایگان
۲

متغیرها، تغییرپذیری، shadowing و خواندن از ورودی

۷ درس
  • let، let mut، shadowing و constپیش‌نمایش رایگان
  • shadowing در عملپیش‌نمایش رایگانتمرین
  • خواندن از ورودیِ استاندارد در Rustپیش‌نمایش رایگان
  • بازتابِ ورودی (echo)پیش‌نمایش رایگانتمرین
  • خواندنِ دو عدد و جمعِ آن‌هاپیش‌نمایش رایگانتمرین
  • این کد آماده است: N سپس N عددپیش‌نمایش رایگانتمرین
  • بخوان، تبدیل کن، دوبرابر و مربعتمرین
۳

اعداد، تایپ‌های پایه و فرمتِ قطعیِ اعشار

۷ درس
  • تایپ‌های عددی: i32/i64/u32/usize/f64 و تبدیل با as
  • خارج‌قسمت و باقیماندهتمرین
  • فرمتِ صریحِ اعشار: قانونِ {:.2}
  • مساحتِ دایره با فرمتِ ثابتتمرین
  • تبدیلِ صریحِ نوع و تقسیمِ اعشاریتمرین
  • ریشه و توان: متدهای f64تمرین
  • سرریزِ صحیح: checked، wrapping و saturatingتمرین
۴

کنترلِ جریان: if، loop، while و for

۷ درس
  • همه‌چیز یک عبارت است: if، loop، while، for
  • این کد آماده است: ردگیریِ یک حلقهتمرین
  • نمره به حرف با if/elseتمرین
  • FizzBuzzتمرین
  • loop با break مقدار-برگردانتمرین
  • break با برچسب در حلقه‌های تودرتوتمرین
  • جمع‌بندیِ کنترلِ جریان
۵

توابع و سبکِ عبارت‌محور

۶ درس
  • توابع، پارامترها و بازگشتِ عبارتی
  • بیشینه‌ی دو عددتمرین
  • کمینه و بیشینه با تاپلتمرین
  • این کد آماده است: تست از داخلِ mainتمرین
  • تقسیمِ امن با علامتِ خطاتمرین
  • توابعِ تابع‌گرفته و ترکیبتمرین
۶

★ مالکیت، انتقال و کلون (قلبِ Rust — بخشِ یک)

۷ درس
  • سه قاعده‌ی مالکیت، پشته/heap و Drop
  • انتقال (move) در برابر کپی (Copy)
  • انتقالِ String به یک تابعتمرین
  • clone در برابر move: استقلالِ کپی را اثبات کنتمرین
  • بازگرداندنِ مالکیت از تابعتمرین
  • این کد آماده است: انتقال در عملتمرین
  • مالکیتِ Vec هنگامِ انتقال به تابعتمرین
۷

★ قرض‌گیری، مرجع‌ها و borrow checker (قلبِ Rust — بخشِ دو)

۷ درس
  • مرجع‌ها و قرض‌گیری: &T و &mut T
  • تغییر در محل با &mut Tتمرین
  • افزودن به Vec از طریقِ &mutتمرین
  • خواندنِ خطاهای borrow checker و شهودِ NLL
  • محاسبه‌ی مجموع بدونِ گرفتنِ مالکیتتمرین
  • اِسلایس‌ها: نمای قرض‌گرفته به دادهتمرین
  • این کد آماده است: اشتراکی در برابر انحصاریتمرین
۸

استراکت‌ها و متدها (impl)

۶ درس
  • استراکت‌ها: تعریف، نمونه‌سازی و derive(Debug)
  • استراکتِ Point و فاصلهتمرین
  • متدها و توابعِ مرتبط: impl و self
  • مستطیل با متدهای مساحت و محیطتمرین
  • سازنده و اعتبارسنجیِ داخلیتمرین
  • حسابِ ساده با &mut selfتمرین
۹

enumها، الگوگذاری و matchِ جامع

۶ درس
  • enumها و matchِ جامع
  • نامِ روزِ هفته با matchتمرین
  • ماشین‌حسابِ تک‌عملگری با enumتمرین
  • الگوگذاریِ ژرف: تاپل، بازه، گارد، | و بایندِ @
  • نمره به حرف با الگوی بازه‌ایتمرین
  • if let و while let در عملتمرین
۱۰

★ Option و Result و اپراتورِ ? (مدیریتِ خطا — بخشِ یک)

۷ درس
  • Option: جایگزینِ امنِ null
  • دسترسیِ امن به عنصرِ Vecتمرین
  • بیشینه‌ی لیست با Optionتمرین
  • Result و اپراتورِ ?
  • پارسِ اعداد با ? و گزارشِ خطاتمرین
  • ترکیب‌گرهای Result: map، and_then، unwrap_orتمرین
  • این کد آماده است: ? در یک تابعِ کمکیتمرین
۱۱

خطاهای سفارشی و `Box<dyn Error>` (مدیریتِ خطا — بخشِ دو)

۶ درس
  • panic در برابر Result؛ unwrap و expect
  • تقسیم با خطای متنیتمرین
  • نوعِ خطای سفارشی با enum و پیاده‌سازیِ Display و Error
  • اعتبارسنج با نوعِ خطای سفارشیتمرین
  • یک‌کاسه‌کردنِ خطاها با Box<dyn Error>تمرین
  • زنجیره‌ی پردازش با انتشارِ خطاتمرین
۱۲

کالکشن‌ها: Vec و قطعیّتِ خروجی

۶ درس
  • Vec: ساخت، رشد، اندیس و get
  • مجموع و میانگینِ یک Vecتمرین
  • سورتِ صعودی و چاپِ فاصله‌جداتمرین
  • وارونه‌سازی و حذفِ تکراریتمرین
  • حذفِ عنصر و جابه‌جاییتمرین
  • ماتریسِ دوبعدی با Vec<Vec>تمرین
۱۳

HashMap در برابر BTreeMap و قانونِ طلاییِ قطعیّت

۶ درس
  • قانونِ طلایی: ترتیبِ HashMap تصادفی است
  • این کد آماده است: چاپِ مرتبِ یک mapتمرین
  • شمارشِ بسامدِ کلمه‌هاتمرین
  • entry API: شمارش و انباشتتمرین
  • HashSet/BTreeSet به‌عنوان مجموعهتمرین
  • چک‌لیستِ قطعیّت (نسخه‌ی کامل)
۱۴

رشته‌ها: String در برابر str&، chars و bytes

۷ درس
  • String در برابر str&، chars و bytes
  • شمارشِ بایت در برابر کاراکترتمرین
  • وارونه‌سازی بر اساسِ کاراکترتمرین
  • شمارشِ مصوت‌هاتمرین
  • پارسِ خطِ CSV و انتخابِ فیلدتمرین
  • ساختِ رشته با push_str و فرمتتمرین
  • parse و تبدیلِ عدد به رشته و برعکستمرین
۱۵

★ تِرِیت‌ها، trait objectها و جنریک‌ها (قلبِ Rust — بخشِ سه)

۷ درس
  • تِرِیت‌ها: تعریف، پیاده‌سازی و متدِ پیش‌فرض
  • تِرِیتِ Shape و پیاده‌سازی برای دایره و مستطیلتمرین
  • جنریک‌ها و کرانِ تِرِیت
  • بیشینه‌ی جنریک با کرانِ PartialOrdتمرین
  • trait objectها و ارسالِ پویا
  • مجموعه‌ی ناهمگنِ شکل‌ها با Box<dyn Shape>تمرین
  • بازنویسیِ اپراتور با تِرِیتِ Add و Displayتمرین
۱۶

★ طول‌عمرها (lifetimes)

۶ درس
  • چرا طول‌عمر؟ نحوِ <'a> و جلوگیری از dangling
  • بلندتر از دو خط (longest)تمرین
  • طول‌عمر در استراکت‌ها و متدها، و 'static
  • استراکتِ نگه‌دارنده‌ی برشتمرین
  • سه قاعده‌ی حذفِ طول‌عمر (elision)
  • این کد آماده است: طول‌عمر در عملتمرین
۱۷

closureها، iteratorها و سبکِ تابعی

۷ درس
  • closureها: Fn، FnMut، FnOnce و move
  • اعمالِ یک closure روی هر عنصرتمرین
  • iteratorها: next، آداپتورها و collect
  • مجموعِ مربعِ اعدادِ زوجتمرین
  • شماره‌گذاری با enumerateتمرین
  • خطِ پردازش با zip و foldتمرین
  • این کد آماده است: حلقه در برابر iteratorتمرین
۱۸

کالکشن‌های بیشتر: BTreeMap، VecDeque و کاربردها

۶ درس
  • انتخابِ کالکشنِ درست و VecDeque
  • شبیه‌سازیِ صف با VecDequeتمرین
  • پشته و تطبیقِ پرانتزهاتمرین
  • گروه‌بندی با BTreeMapتمرین
  • BTreeMapِ تودرتو برای کانفیگتمرین
  • BinaryHeap برای k عددِ بزرگتمرین
۱۹

اشاره‌گرهای هوشمند: Box، Rc و RefCell

۶ درس
  • Box: heap و نوع‌های بازگشتی
  • لیستِ پیوندی (cons list) با Boxتمرین
  • Rc: مالکیتِ اشتراکیِ تک‌رشته‌ای
  • شمارشِ مرجع با strong_countتمرین
  • RefCell و تغییرپذیریِ درونی
  • شمارنده‌ی اشتراکی با Rc<RefCell>تمرین
۲۰

ماژول‌ها، use و ماکروهای !macro_rules

۶ درس
  • ماژول‌ها در یک فایل: mod، pub، use و مسیرها
  • ماژولِ stats با توابعِ عمومیتمرین
  • دو ماژولِ همکار با useتمرین
  • ماکروهای اعلانی: !macro_rules
  • ماکروی !max برای چند آرگومانتمرین
  • ماکروی سازنده‌ی Vec سفارشیتمرین
۲۱

هم‌روندیِ قطعی: thread، mpsc و Arc<Mutex>

۶ درس
  • هم‌روندیِ قطعی: چرا هرگز از داخلِ thread چاپ نمی‌کنیم
  • این کد آماده است: fan-out قطعیتمرین
  • مربعِ موازی با خروجیِ مرتبتمرین
  • جمعِ موازی با کانالِ mpsc و sortتمرین
  • اشتباهاتِ رایجِ هم‌روندی (race) و چرا داور آن‌ها را رد می‌کند
  • شمارنده‌ی اشتراکی با Arc<Mutex>تمرین
۲۲

تست، idiomها و سازماندهیِ کد

۶ درس
  • آزمون‌نویسی در Rust: ‎#[test]‎ و چرا اینجا main را اجرا می‌کنیم
  • تست از داخلِ main با PASS/FAILتمرین
  • Rust اصیل (idiomatic): match، if let، ? و iterator
  • بازنویسیِ idiomatic با iteratorتمرین
  • این کد آماده است: مقایسه‌ی idiomatic و غیرidiomaticتمرین
  • بازآرایی با بازگشتِ زودهنگام و ?تمرین
۲۳

پروژه‌های واقعی I: ابزارهای متن و داده

۷ درس
  • معرفیِ پروژه‌ها: از مفهوم تا ابزارِ واقعی
  • کدگذاری و رمزگشاییِ RLEتمرین
  • رمزِ سزار و ROT13تمرین
  • اعدادِ رومی (دوطرفه)تمرین
  • شمارشِ بسامد با رتبه‌بندیتمرین
  • خلاصه‌سازِ CSV با دستتمرین
  • خلاصه‌سازِ خطوطِ لاگتمرین
۲۴

پروژه‌های واقعی II: پارسرها، مفسرها و ماشین‌های حالت

۸ درس
  • معرفیِ پروژه‌های پایانی: lexer، parser و evaluator
  • ماشین‌حسابِ RPNتمرین
  • ارزیابِ عبارتِ میان‌وندی (shunting-yard)تمرین
  • درختِ عبارتِ typed با Boxتمرین
  • ماشینِ حالتِ متناهیتمرین
  • پارسر و اعتبارسنجِ JSON با دستتمرین
  • ماشینِ مجازیِ پشته‌ای (مفسرِ بایت‌کد)تمرین
  • جمع‌بندیِ دوره و گام‌های بعدی

همین حالا شروع کن

اولین خط کدت را همین امروز در «راست از صفر تا برنامه‌نویس» بنویس. شروع رایگان است و در کمتر از دو دقیقه وارد محیط یادگیری می‌شوی.

راست از صفر تا برنامه‌نویس — دینا کد