Форум программистов, компьютерный форум, киберфорум
Rust
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Просто Лис
Эксперт Python
4236 / 2646 / 910
Регистрация: 17.05.2012
Сообщений: 7,903
Записей в блоге: 9
1

[serde] Валидация длины строки при сериализации структуры

04.01.2021, 14:03. Просмотров 537. Ответов 1
Метки xml (Все метки)

Доброго времени суток.

Есть такая структура, которая успешно сериализуется в xml:
C#
1
2
3
4
5
6
7
8
9
10
11
12
/// Блок авторизации
#[derive(Debug, Serialize)]
pub struct AuthData {
    /// 
    #[serde(rename = "Login", default)]
    // max_length = 50
    pub login: String,
    /// Пароль
    #[serde(rename = "Pass", default)]
    // max_length = 50
    pub pass: String,
}
Однако, сейчас не проверяется длина строки. Можно ли как-нибудь добавить проверку перед сериализацией или в конструктор структуры?

Пока только такая идея в голову пришла:
C#
1
2
3
4
5
6
7
impl AuthData {
    fn new(login: String, pass: String) -> Self {
        assert!(login.len() <= 50);
        assert!(pass.len() <= 50);
        Self { login, pass }
    }
}
Добавлено через 2 часа 56 минут
В итоге прикрутил валидацию так:
C#
1
2
3
4
5
6
7
8
9
10
11
/// Блок авторизации
#[derive(Debug, Validate, Serialize)]
pub struct AuthData {
    #[validate(length(max = 50))]
    #[serde(rename = "Login", default)]
    pub login: String,
    /// Пароль
    #[validate(length(max = 50))]
    #[serde(rename = "Pass", default)]
    pub pass: String,
}
Больше макросов богу макросов! https://crates.io/crates/validator (правда, функцию валидации придётся вызывать вручную перед сериализацией)
2
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.01.2021, 14:03
Ответы с готовыми решениями:

Строки конечной длины в полях структуры. Файловое чтение-запись
Переделываю под QT еще Дельфевый вариант программы хранящей данные в т.н. типизированном файле...

Перенос строки в Memo1 при достижении определённой длины строки
Здравствуйте. помогите. забуксовал. как правильно перенести строку в Memo1 при достижении...

Ошибки (в файле содержатся строки разной длины - записать их в выходной файл в порядке возрастания длины строки)
#include &lt;iostream&gt; #include &lt;set&gt; #include &lt;iterator&gt; #include &lt;fstream&gt; #include &lt;string&gt;...

Получить последовательность содержащую строки из A длины L1 и все строки из B длины L2 (используя LINQ)
Даны целые положительные числа L1 и L2 и строковые последовательности A и B. Строки...

1
4069 / 2647 / 374
Регистрация: 01.06.2013
Сообщений: 5,622
Записей в блоге: 9
04.01.2021, 14:39 2
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Больше макросов богу макросов!
Хвала составителям документации, за то, что там хоть что то можно найти. Ну и гуглу, наверное.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.01.2021, 14:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки
ребят всю голову сломал уже завтра уже надо сдавать(( Текстовый файл содержит строки –...

Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки
Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке...

вычисление длины строки при печати
Всем привет ! Хотелось бы узнать о возможности вычисления длины строки заданного шрифта перед...

При 0С железный и медный стержни имеют длины 20 см и 21 см соответственно. Сравнить их длины при нагревании
При 0oС железный и медный стержни имеют длины 20 см и 21 см соответственно. Сравнить их длины при...

Уменьшение длины строки при передаче в скрипт
Друзья, подскажите пож-та... Не могу разобаться, да и корректно загуглить... История следующая,...

Ошибка при сериализации
Ошибка Invalid start tag ArrayOfBookClass App1 G:\Projects\Visual Studio Projects\0 Android...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.