Мне нужна дополнительная информация о типе URL-адреса, поэтому я создал структуру UrlWithPhantomdata
с полем значения для URL-адреса и полем PhantomData
. Как я могу десериализовать строку в эту структуру с помощью Serde?
Более конкретно, учитывая этот объект JSON:
{
"url": "https://example.com"
}
Как я могу десериализовать его в следующую структуру ApiData
?
#[derive(Deserialize)]
pub struct ApiData {
url: UrlWithPhantomdata<i32>
}
#[derive(Deserialize)]
pub struct UrlWithPhantomdata<T> {
#[serde(with = "url_serde")]
url_value: Url,
#[serde(skip)]
url_type: PhantomData<T>
}
Более общая проблема рассматривается в serde-rs/serde#1048, но Я ищу решение, которое работает, пока эта ошибка не будет исправлена.
url_serde
(или решать, нужен ли он вообще для решения основной проблемы). - person Shepmaster   schedule 16.02.2018serde::Deserialize
для своего типа, десериализуйтеUrl
(он жеString
) внутри этой реализации, затем создайте новое значение вашего типа с соответствующимPhantomData
. - person Shepmaster   schedule 16.02.2018