Что такое validator?
validator — это популярная библиотека для валидации данных на языке Rust. Она предоставляет гибкие и выразительные инструменты для проверки корректности входных данных: строк, чисел, email-адресов, URL, IP-адресов, UUID и многого другого. Библиотека основана на макросах и трейтах, что позволяет легко комбинировать правила валидации и создавать собственные проверки.
Зачем нужна валидация данных?
В любом приложении, работающем с пользовательским вводом, API или конфигурационными файлами, критически важно проверять данные до их использования. Ошибки валидации могут привести к падению программы, уязвимостям или некорректной работе. Библиотека validator помогает:
- Гарантировать целостность данных
- Уменьшить количество boilerplate-кода
- Обеспечить единообразную обработку ошибок
- Упростить тестирование
Установка
Добавьте validator в файл Cargo.toml:
[dependencies]
validator = "0.18"
serde = { version = "1.0", features = ["derive"] }Также часто используется serde для десериализации данных перед валидацией.
Основные функции
- Атрибуты валидации —
#[validate(...)]для полей структур - Встроенные валидаторы:
length,range,email,url,ip,uuid,contains,regex,custom - Вложенная валидация — рекурсивная проверка вложенных структур
- Кастомные валидаторы — через функции или замыкания
- Группировка ошибок — сбор всех ошибок валидации в единый объект
ValidationErrors
Пример кода на Rust
use validator::Validate;
use serde::Deserialize;
#[derive(Debug, Deserialize, Validate)]
struct User {
#[validate(length(min = 2, max = 50))]
name: String,
#[validate(email)]
email: String,
#[validate(range(min = 13, max = 120))]
age: u8,
#[validate(url)]
website: Option<String>,
}
fn main() {
let user = User {
name: "A".to_string(),
email: "invalid-email".to_string(),
age: 10,
website: Some("not-a-url".to_string()),
};
match user.validate() {
Ok(_) => println!("Данные корректны"),
Err(errors) => {
for (field, errs) in errors.field_errors() {
for err in errs {
println!("Ошибка в поле {}: {}", field, err);
}
}
}
}
}Когда использовать validator?
Библиотека идеально подходит для:
- Веб-серверов на Actix, Axum, Rocket
- Обработки форм и JSON-запросов
- Парсинга конфигурационных файлов
- CLI-приложений с пользовательским вводом
- Валидации данных перед записью в БД
Если вам нужно быстро и надёжно проверять данные в Rust — validator станет отличным выбором.