PathBuf. Я хочу гарантировать, что после того, как serde распарсит конфиг, в articles_directory будет лежать абсолютный путь, и что туда нельзя будет положить неабсолютный путь, но при этом хочу иметь возможность сделать структуру с неабсолютным путём и тут же её сдампить (для генерации примера конфига). Пока что придумал сделать проверку внутри сеттера (генерация конфига и так происходит внутри самого конфига). Это нормальный подход?
Пока что вижу минус такой, что пример конфига будет содержать в себе невалидный путь, если попробовать такой конфиг где-то использовать. Решением вижу переработать метод и возвращать не саму структуру напрямую, а только сериализованные данные как-нибудь. Из минусов своего подхода вижу то, что желаемый тип поля ("абсолютный путь") отражён не в типе, а с помощью дополнительных проверок, и в методах самого конфига можно случайно ошибиться и положить невалидный путь.
Сделай тип обобщённым относительно типа пути и добавь тип "абсолютный путь" и "произвольный путь" и реализуй для них Deserialize
serde даёт возможность вывести Serialize и Deserialize для типа, но #[derive()] я не смогу использовать на структуре с обобщённым полем. Как не реализовывать трейт самостоятельно, а дать макросу сделать это автоматически? (Если это возможно, конечно)
> но #[derive()] я не смогу использовать на структуре с обобщённым полем Можешь, почему нет-то?
Ой, derive с нужными мне трейтами
Так а какая там ошибка?
Нет ошибки. Я раньше пробовал что-то подобное и оно не работало. Видимо, другое пробовал.
Обсуждают сегодня