Курс основан на оригинальных материалах Rust Training. Лицензии: MIT (код) и CC-BY-4.0 (текст).
Русский перевод и адаптация выполнены участниками проекта RustTraining-Rus.
Замечания и исправления присылайте через Issues и Pull Requests репозитория.
Это практическое руководство по использованию системы типов Rust, чтобы целые классы ошибок становились невозможными для компиляции. Сопутствующая книга Паттерны Rust объясняет механику (трейты, ассоциированные типы, typestate), а это руководство показывает, как применять эту механику к реальным задачам: диагностике аппаратного обеспечения, криптографии, валидации протоколов и встраиваемым системам.
Все паттерны здесь следуют одному принципу: переносите инварианты из проверок во время выполнения в систему типов, чтобы компилятор обеспечивал их соблюдение.
← Менее безопасно Более безопасно →
Проверки в рантайме Модульные тесты Property-тесты Корректность по построению
─────────────────── ──────────────── ────────────── ──────────────────────────
if temp > 100 { #[test] proptest! { struct Celsius(f64);
panic!("слишком fn test_temp() { |t in 0..200| { // Нельзя перепутать с Rpm
жарко"); assert!( assert!(...) // на уровне типов
} check(42)); }
} }
Некорректная программа?
Неверный код? Неверный код? Неверный код? Не скомпилируется.
Падает в проде. Падает в CI. Падает в CI Её не существует.
(вероятностно).
Это руководство работает в самой правой позиции — там, где ошибок не бывает, потому что система типов не может их выразить.