Валидация данных в Rust: библиотека validator

Онлайн-тренажер Python для начинающих

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

Начать курс

Что такое валидация данных в Rust и зачем она нужна?

Валидация данных — это процесс проверки корректности входных данных перед их обработкой. В Rust, языке системного программирования с акцентом на безопасность и производительность, валидация особенно важна, так как помогает предотвратить логические ошибки, утечки данных и падения программы. Библиотека validator предоставляет декларативный подход к проверке полей структур с использованием атрибутов, что делает код чистым и поддерживаемым.

Как установить библиотеку validator?

Добавьте зависимость в файл Cargo.toml:

[dependencies]
validator = "0.16"
validator_derive = "0.16"

Затем выполните команду cargo build для загрузки и компиляции библиотеки.

Основные функции библиотеки

  • Встроенные валидаторы: проверка длины строки (min/max), email, URL, числовые диапазоны, регулярные выражения и многое другое.
  • Атрибуты для структур: используйте #[derive(Validate)] и аннотации полей, например #[validate(email)].
  • Кастомные валидаторы: создавайте собственные функции для специфических правил.
  • Группировка ошибок: возвращает коллекцию ошибок с указанием поля и сообщения.
  • Поддержка вложенных структур: рекурсивная валидация сложных объектов.

Пример кода на Rust

use validator::Validate;

#[derive(Debug, Validate)]
struct User {
    #[validate(length(min = 3, max = 20))]
    username: String,
    #[validate(email)]
    email: String,
    #[validate(range(min = 18, max = 120))]
    age: u8,
}

fn main() {
    let user = User {
        username: String::from("al"),
        email: String::from("invalid-email"),
        age: 15,
    };

    match user.validate() {
        Ok(_) => println!("Данные корректны"),
        Err(errors) => {
            for (field, err) in &errors {
                println!("Ошибка в поле {}: {:?}", field, err);
            }
        }
    }
}

В этом примере проверяются длина имени, формат email и возраст. При несоответствии выводится список ошибок.

Когда использовать validator?

  • При разработке REST API для проверки входящих запросов.
  • В конфигурационных файлах (YAML, JSON) для гарантии корректности настроек.
  • При работе с пользовательским вводом — регистрация, формы, комментарии.
  • В парсерах данных, где требуется строгий контроль типов и форматов.
  • В системах с высокими требованиями к безопасности и надежности.

Библиотека validator идеально подходит для проектов, где важна производительность Rust и читаемость кода. Она легко интегрируется с другими крейтами, например serde для десериализации.

Рекомендаций