1. Ласкаво просимо в Comprehensive Rust 🦀
  2. Проведення курсу
    1. Структура курсу
    2. Гарячі клавіші
    3. Переклади
  3. Використання Cargo
    1. Екосистема Rust
    2. Приклади коду
    3. Локальний запуск Cargo
  4. День 1: Ранок
  5. Ласкаво просимо
  6. Hello World!
    1. Що таке Rust?
    2. Переваги Rust
    3. Ігровий майданчик
  7. Типи та значення
    1. Hello World!
    2. Змінні
    3. Значення
    4. Арифметика
    5. Виведення типів
    6. Вправа: Фібоначчі
      1. Рішення
  8. Основи потоку керування
    1. Вирази if
    2. Цикли
      1. for
      2. loop
    3. break та continue
      1. Мітки
    4. Блоки та області застосування
      1. Області видимості та затінення
    5. Функції
    6. Макроси
    7. Вправа: Послідовність Коллатца
      1. Рішення
  9. День 1: Полудень
  10. Ласкаво просимо
  11. Кортежі та масиви
    1. Масиви
    2. Кортежі
    3. Ітерація масиву
    4. Патерни та деструктуризація
    5. Вправа: Вкладені масиви
      1. Рішення
  12. Посилання
    1. Спільні посилання
    2. Ексклюзивні посилання
    3. Зрізи
    4. Рядки
    5. Вправа: Геометрія
      1. Рішення
  13. Типи, які визначаються користувачем
    1. Іменовані структури
    2. Кортежні структури
    3. Перелічувані типи
    4. Константи
    5. Статика
    6. Псевдоніми типу
    7. Вправа: події в ліфті
      1. Рішення
  14. День 2: Ранок
  15. Ласкаво просимо
  16. Зіставлення зразків
    1. Співставлення значень
    2. Деструктурування структур
    3. Деструктурування переліків
    4. Потік контролю Let
    5. Вправа: обчислення виразу
      1. Рішення
  17. Методи та Трейти
    1. Методи
    2. Трейти
      1. Реалізація трейтів
      2. Супертрейти
      3. Асоційовані типи
    3. Виведення
    4. Вправа: Загальний логгер
      1. Рішення
  18. День 2: Полудень
  19. Ласкаво просимо
  20. Узагальнені типи
    1. Узагальнені функції
    2. Узагальнені типи даних
    3. Узагальнені трейти
    4. Обмеження трейту
    5. impl Trait
    6. dyn Trait
    7. Вправа: узагальнена min
      1. Рішення
  21. Типи стандартної бібліотеки
    1. Стандартна бібліотека
    2. Документація
    3. Option
    4. Result
    5. String
    6. Vec
    7. HashMap
    8. Вправа: Лічильник
      1. Рішення
  22. Трейти стандартної бібліотеки
    1. Порівняння
    2. Оператори
    3. From та Into
    4. Приведення
    5. Read та Write
    6. Default, синтаксис оновлення структури
    7. Закриття
    8. Вправа: ROT13
      1. Рішення
  23. День 3: Ранок
  24. Ласкаво просимо
  25. Управління пам'яттю
    1. Огляд пам'яті програми
    2. Підходи до управління пам'яттю
    3. Володіння
    4. Семантика переміщення
    5. Clone
    6. Типи які копіюються
    7. Drop
    8. Вправа: Тип будівельника
      1. Рішення
  26. Розумні вказівники
    1. Box<T>
    2. Rc
    3. Принадлежні об'єкти трейтів
    4. Вправа: Бінарне дерево
      1. Рішення
  27. День 3: Полудень
  28. Ласкаво просимо
  29. Запозичення
    1. Запозичення значення
    2. Перевірка запозичення
    3. Помилки запозичення
    4. Внутрішня мутабельність
    5. Вправа: Статистика здоров’я
      1. Рішення
  30. Тривалість життя
    1. Анотації тривалісті життя
    2. Упущення тривалісті життя
    3. Тривалість життя структур
    4. Вправа: Розбір Protobuf
      1. Рішення
  31. День 4: Ранок
  32. Ласкаво просимо
  33. Ітератори
    1. Ітератор
    2. IntoIterator
    3. FromIterator
    4. Вправа: ланцюжок методів ітератора
      1. Рішення
  34. Модулі
    1. Модулі
    2. Ієрархія файлової системи
    3. Видимість
    4. use, super, self
    5. Вправа: Модулі для бібліотеки графічного інтерфейсу користувача
      1. Рішення
  35. Тестування
    1. Тестові модулі
    2. Інші типи тестів
    3. Лінти компілятора та Clippy
    4. Вправа: Алгоритм Луна
      1. Рішення
  36. День 4: Полудень
  37. Ласкаво просимо
  38. Обробка помилок
    1. Паніки
    2. Result
    3. Оператор спроб
    4. Перетворення спроб
    5. Error трейт
    6. thiserror
    7. anyhow
    8. Вправа: Переписування с Result
      1. Рішення
  39. Небезпечний Rust
    1. Unsafe
    2. Розіменування "сирих" вказівників
    3. Несталі статичні змінні
    4. Об'єднання
    5. Небезпечні функції
    6. Небезпечні трейти
    7. Вправа: обгортка FFI
      1. Рішення
  40. Android
  41. Ласкаво просимо
  42. Установка
  43. Правила побудови
    1. Бінарний файл
    2. Бібліотека
  44. AIDL
    1. Посібник із сервісу Birthday
      1. Інтерфейс
      2. API сервісу
      3. Сервіс
      4. Сервер
      5. Розгортка
      6. Кліент
      7. Зміна API
      8. Оновлення реалізацій
    2. AIDL типи
      1. Примітивні типи
      2. Типи Масивів
      3. Надсилання об'єктів
      4. Посилкові данні
      5. Надсилання файлів
  45. Тестування
    1. GoogleTest
    2. Mocking
  46. Журналювання
  47. Інтероперабельність
    1. З С
      1. Виклик С за допомогою Bindgen
      2. Виклик Rust з C
    2. З С++
      1. Модуль Bridge
      2. Rust Bridge
      3. Згенерований C++
      4. C++ Bridge
      5. Спільні типи
      6. Спільні переліки
      7. Обробка помилок в Rust
      8. Обробка помилок в C++
      9. Додаткові типи
      10. Збірка для Android: C++
      11. Збірка для Android: Genrules
      12. Збірка для Android: Rust
    3. З Java
  48. Chromium
  49. Ласкаво просимо
  50. Установка
  51. Порівняння екосистем Chromium і Cargo
  52. Політика
  53. Правила побудови
    1. Небезпечний код
    2. Залежнісь Chromium C++ від коду Rust
    3. Visual Studio Code
    4. Вправа
  54. Тестування
    1. Бібліотека rust_gtest_interop
    2. Правила GN для тестів Rust
    3. Макрос chromium::import!
    4. Вправа
  55. Взаємодія з C++
    1. Приклади прив'язок
    2. Обмеження CXX
    3. Обробка помилок в CXX
      1. Обробка помилок: приклад QR
      2. Обробка помилок: приклад PNG
    4. Використання CXX у Chromium
    5. Вправа
  56. Додавання крейтів третіх сторін
    1. Налаштування Cargo.toml
    2. Налаштування gnrt_config.toml
    3. Завантаження крейтів
    4. Створення правил побудови gn
    5. Вирішення проблем
      1. Скрипти збірки, які генерують код
      2. Скрипти збірки, які будують C++ або виконують довільні дії
    6. Залежнісь від крейта
    7. Перевірки та аудити
    8. Реєстрація в Chromium Source Code
    9. Підтримання крейтів в актуальному стані
    10. Вправа
  57. Зібрання усього разом - вправа
  58. Рішення вправ
  59. Залізо: Ранок
  60. Ласкаво просимо
  61. no_std
    1. Мінімальний приклад
    2. alloc
  62. Мікроконтролери
    1. Сирий ввід вивід з відображеної пам'яті (MMIO)
    2. Крейти доступу до периферійних пристроїв (PACs)
    3. Крейти абстракції обладнання (HAL)
    4. Крейти підтримки плат
    5. Шаблон стану типу
    6. embedded-hal
    7. probe-rs та cargo-embed
      1. Налагодження
    8. Інші проєкти
  63. Вправи
    1. Компас
    2. Рішення
  64. Залізо: Полудень
  65. Прикладні процесори
    1. Підготовка до Rust
    2. Вбудована збірка
    3. Ввід вивід з відображеної пам'яті (MMIO)
    4. Давайте напишемо драйвер UART
      1. Більше трейтів
    5. Кращий драйвер UART
      1. Бітові прапорці (крейт bitflags)
      2. Кілька регістрів
      3. Драйвер
      4. Використання
    6. Журналювання
      1. Використання
    7. Виключення
    8. Інші проєкти
  66. Корисні крейти
    1. zerocopy
    2. aarch64-paging
    3. buddy_system_allocator
    4. tinyvec
    5. spin
  67. Залізо на Android
    1. vmbase
  68. Вправи
    1. Драйвер годинника реального часу (RTC)
    2. Рішення
  69. Одночасність виконання: Ранок
  70. Ласкаво просимо
  71. Потоки
    1. Звичайні потоки
    2. Потоки з областю видимості
  72. Канали
    1. Відправники та отримувачі
    2. Незав'язані канали
    3. Зав'язані канали
  73. Send та Sync
    1. Маркерні трейти
    2. Send
    3. Sync
    4. Приклади
  74. Спільний стан
    1. Arc
    2. Mutex
    3. Приклад
  75. Вправи
    1. Вечеря філософів
    2. Перевірка багатопоточних посилань
    3. Рішення
  76. Одночасність виконання: Полудень
  77. Ласкаво просимо
  78. Основи асинхронізації
    1. async/await
    2. Futures
    3. Середовища виконання
      1. Токіо
    4. Завдання
  79. Канали та потік управління
    1. Асинхронні канали
    2. Join
    3. Select
  80. Підводні камені
    1. Блокування Виконавця
    2. Pin
    3. Асинхронні трейти
    4. Скасування
  81. Вправи
    1. Вечеря філософів
    2. Програма широкомовного чату
    3. Рішення
  82. Заключні слова
  83. Дякую!
  84. Глосарій
  85. Інші ресурси
  86. Кредити