R
Rust Books
@books_englishhh6.2K подп.
2.0Kпросмотров
32.8%от подписчиков
23 февраля 2026 г.
📷 ФотоScore: 2.2K
🦀 Rust: Parse, don’t validate Большинство ошибок в коде появляются из-за одной проблемы - мы проверяем данные, но потом забываем про эти проверки. Классический подход: - получили строку - где-то вызвали validate() - дальше передаём её по коду И надеемся, что везде проверка была выполнена. В Rust используют другой принцип: Parse, don’t validate - не проверяй данные, а сразу преобразуй их в корректный тип. Идея: - принимаем небезопасный input - парсим его в специальный тип (newtype) - если тип создан — данные уже гарантированно валидны - дальше компилятор следит за инвариантами Пример: struct Email(String); impl Email { fn parse(input: &str) -> Result<Self, String> { if input.contains("@") { Ok(Email(input.to_string())) } else { Err("Invalid email".into()) } } } Теперь: • нельзя случайно использовать невалидный email • проверки не размазаны по коду • меньше багов • безопасность на уровне типов Это и есть type-driven design: сначала проектируешь типы, потом код становится проще и надёжнее. Меньше runtime-ошибок. Больше гарантий от компилятора. Разбор: https://harudagondi.space/blog/parse-dont-validate-and-type-driven-design-in-rust/
2.0K
просмотров
1221
символов
Да
эмодзи
Да
медиа

Другие посты @books_englishhh

Все посты канала →
🦀 Rust: Parse, don’t validate Большинство ошибок в коде поя — @books_englishhh | PostSniper