раздел 23

Rust

Системный Rust по лесенке блоков: от владения, трейтов и модульной системы через биты и машинный уровень, Rustonomicon и макросы к трём проектам (эмулятор учебного процессора с HAL, эмулятор NES, сетевой игровой движок со своим протоколом), async изнутри, атомикам на уровне книги Мары Бос и Rust в браузере через WebAssembly. Безопасность памяти без сборщика мусора, нулевые абстракции. Сверху пристыкован подкластер Functional DDD на Rust (доменные типы, Decider, event store на Postgres, CQRS-проекции) на сквозном домене бронирования отеля и отдельный урок про внедрение зависимостей (трейты, экстракторы axum, системы bevy и регистрация до main). Дальше раздел Web3 на Rust.

78 уроков78 тем · 14 кластеров

Начать раздел

Раздел открыт для всех. Войди, чтобы отмечать пройденные уроки, вести заметки и решать задачи в редакторе. войти

Уроки раздела

  1. Зачем Rust. rustup, cargo и первая программаJ~40 мин
  2. Базовые типы и поток управления: разбираемся без стрессаJ~40 мин
  3. Владение: move, Copy, drop и RAIIJ~35 мин
  4. Заимствование, ссылки и срезыM~35 мин
  5. Структуры и методыJ~40 мин
  6. Перечисления и pattern matchingM~35 мин
  7. Коллекции и строкиM~35 мин
  8. Обработка ошибок: Result, ? и свои типыM~35 мин
  9. Дженерики и ограниченияM~30 мин
  10. Что такое трейтM~35 мин
  11. Стандартные трейтыS~45 мин
  12. Трейт-объекты и диспетчеризацияS~40 мин
  13. Итераторы и замыканияMS~45 мин
  14. Модули, крейты и видимостьM~30 мин
  15. Cargo, workspaces и архитектура проектаM~35 мин
  16. Экосистема: serde, clap, tokio и docs.rsM~35 мин
  17. Идиоматичный и защищённый RustS~55 мин
  18. Биты, байты и endiannessM~35 мин
  19. Целые числа и дополнительный кодM~30 мин
  20. Вещественные числа и IEEE-754MS~30 мин
  21. Машинный уровень: ассемблер и дизассемблерS~40 мин
  22. Раскладка в памяти и reprS~40 мин
  23. Кодируем битики: bit reader, varint, zigzagMS~50 мин
  24. Умные указатели и внутренняя мутабельностьMS~50 мин
  25. Связный список тремя способамиS~50 мин
  26. Лайфтаймы вглубьS~40 мин
  27. ВариантностьL~50 мин
  28. DST и толстые указателиS~45 мин
  29. Маркерные трейтыS~50 мин
  30. Unsafe RustL~45 мин
  31. Дженерики на максималкахL~45 мин
  32. Декларативные макросыS~35 мин
  33. Гигиена и паттерны макросовS~30 мин
  34. Процедурные макросы: deriveS~35 мин
  35. Attribute-like и function-like макросыS~30 мин
  36. Архитектура эмулятораS~55 мин
  37. Состояние процессора и шинаS~45 мин
  38. Декодирование инструкцийS~60 мин
  39. MMIO и прерыванияS~30 мин
  40. HAL как набор трейтовS~40 мин
  41. Отладчик и тестированиеMS~60 мин
  42. Архитектура NESS~40 мин
  43. Ядро 6502S~160 мин
  44. Картридж и мапперыS~120 мин
  45. PPU и фонL~130 мин
  46. СпрайтыL~40 мин
  47. APU и звукS~150 мин
  48. Сборка и запуск игрыS~150 мин
  49. Async-десахаринг: машина состоянийS~50 мин
  50. Pin и самоссылающиеся структурыL~45 мин
  51. Свой исполнительS~80 мин
  52. Tokio изнутриS~50 мин
  53. Отмена и select!S~30 мин
  54. Stream и каналыMS~30 мин
  55. Потоки, Send и Sync: что обещают эти трейтыS~45 мин
  56. Разделяемое состояние: Arc, Mutex и RwLockS~35 мин
  57. Атомики и порядки памятиL~35 мин
  58. Строим примитивы синхронизацииL~40 мин
  59. Lock-free: структуры без замковL~35 мин
  60. Аппаратная модель: кэши, MESI и false sharingL~35 мин
  61. Сокеты с нуля: TCP, UDP и байты на проводеS~35 мин
  62. Проектируем игровой протокол: varint, биты и дельтыS~40 мин
  63. Сериализация: кодек, порядок байт и граница доверияMS~40 мин
  64. Сервер на tokio: авторитетный тик, рассылка, backpressureS~35 мин
  65. Netcode: предсказание, реконсиляция, лаг-компенсацияS~35 мин
  66. Надёжность поверх UDP: acks, переотправка, перегрузкаS~35 мин
  67. Что такое WebAssembly: стековая машина и линейная памятьS~35 мин
  68. Мост Rust и JS: wasm-bindgen, срезы без копий и колбэкиS~40 мин
  69. Эмулятор в браузере: кадр в canvas, ввод и звукS~35 мин
  70. Мощь и пределы WASM: бенчмарк, размер, SIMD, потокиL~30 мин
  71. Капстоун: переиспользуемый движок виджетов и крючок для Web3S~35 мин
  72. Доменные типы на Rust: newtype, TryFrom, приватные поляS~60 мин
  73. Decider на Rust: decide, evolve, replay и явное времяS~60 мин
  74. Event store на Postgres: sqlx, транзакция, оптимистичная блокировкаS~50 мин
  75. Async-проекции и CQRS на Rust: broadcast, tokio, watchL~50 мин
  76. Внедрение зависимостей в Rust: трейты, axum, bevy и жизнь до mainL~45 мин
  77. Тип одного варианта: компоненты путиS~40 мин
  78. Функциональный интерфейс через владениеMS~35 мин

Темы и кластеры

Язык, владение, типы

Трейты, дженерики, итераторы

Модули, проекты, идиомы

Биты и машина

Глубокий core

Макросы

Проект 1 · эмулятор CPU и HAL

Проект 2 · эмулятор NES

Async вглубь

Многопоточность и атомики

Сети и Проект 3 · игровой протокол

WASM: Rust в браузере

Functional DDD на Rust

Rust-идиомы: DI и жизнь до main