У меня есть структура Config, где есть поле articles_directory типа

PathBuf. Я хочу гарантировать, что после того, как serde распарсит конфиг, в articles_directory будет лежать абсолютный путь, и что туда нельзя будет положить неабсолютный путь, но при этом хочу иметь возможность сделать структуру с неабсолютным путём и тут же её сдампить (для генерации примера конфига). Пока что придумал сделать проверку внутри сеттера (генерация конфига и так происходит внутри самого конфига). Это нормальный подход?

Пока что вижу минус такой, что пример конфига будет содержать в себе невалидный путь, если попробовать такой конфиг где-то использовать. Решением вижу переработать метод и возвращать не саму структуру напрямую, а только сериализованные данные как-нибудь. Из минусов своего подхода вижу то, что желаемый тип поля ("абсолютный путь") отражён не в типе, а с помощью дополнительных проверок, и в методах самого конфига можно случайно ошибиться и положить невалидный путь.

6 ответов

8 просмотров

Сделай тип обобщённым относительно типа пути и добавь тип "абсолютный путь" и "произвольный путь" и реализуй для них Deserialize

megahomyak- Автор вопроса
Антон 🇦🇲
Сделай тип обобщённым относительно типа пути и доб...

serde даёт возможность вывести Serialize и Deserialize для типа, но #[derive()] я не смогу использовать на структуре с обобщённым полем. Как не реализовывать трейт самостоятельно, а дать макросу сделать это автоматически? (Если это возможно, конечно)

megahomyak
serde даёт возможность вывести Serialize и Deseria...

> но #[derive()] я не смогу использовать на структуре с обобщённым полем Можешь, почему нет-то?

megahomyak- Автор вопроса
megahomyak- Автор вопроса
Антон 🇦🇲
Так а какая там ошибка?

Нет ошибки. Я раньше пробовал что-то подобное и оно не работало. Видимо, другое пробовал.

Похожие вопросы

Обсуждают сегодня

Ребята, я за проф советом😅 По микросервисам. В монолите есть общие файлы для сервисов: фетчи, конфиги, либы, утилсы.. как при распиле правильно их поддерживать? Пока вариант д...
Александр Тарасюк
1
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Подскажите где можно прочитать про реализацию возможности писать человеку при подписке на телеграм канал от имени бота? Было бы не плохо если для Telegraf@3.38.0
Pan Lipton
10
Мне вот что интересно, кто на рфе стартовал/играл, что вы фармили, в каком виде контента он прямо хорош? Экспедиция? Вроде прямо на замазанных мапах рф сдувается
Владислав
20
‌/r/pathofexile moderation changes top scoring links : pathofexile (RSS) Hi, everyone. On behalf of the subreddit mod team, I’m here to give you a few updates on the subreddi...
Esionru
3
Кто нибудь поясните это всё таки вброс или да? Про санктум слышал на поедб вбросили, а по дурке откуда инфа и на сколько это вообще правда? Пахнет шизофренией какой-то ✅Divi...
Dmitry Ritter
9
У вас бывает ощущение, что хочется потратить весь отпуск на то, чтоб только спать?
Николай
15
У меня вопрос к знающими, стоит ли вступать в гильдии в игре или лучше полная свобода?
Енот Полоскун
17
Как можно настроить фильтр в пое под себя?
Yarik yarik kyda ti lezesh
15
Ребят, есть какие нибудь мили билды, способные в шмотках с пола закрывать атлас?
Ninja Obormot
12
Карта сайта