reqwest v0.9 имеет serde v1.0 в качестве зависимости и в результате реализует преобразование ошибок serde_ json в reqwest error .
В моем коде я делаю некоторые десериализация с использованием serde_ json вместо использования метода .json()
, поставляемого с reqwest.
// reqwest = "0.9"
// serde = { version = "1.0", features = ["derive"] }
// serde_json = "1.0"
pub fn get_meta(client: &reqwest::Client) -> Result<Meta, reqwest::Error> {
let mut resp = client
.get("http://localhost:8080/requests/playlist.json")
.send()?;
let data: Value = serde_json::from_str(&resp.text()?).unwrap();
let data = data["children"][0]["children"].clone();
let metas: Vec<Meta> = serde_json::from_value(data).unwrap();
let meta: Meta = metas.last().expect("nothing is playing").clone();
Ok(meta)
}
В настоящее время я пытаюсь вернуть ошибки serde_ json как ошибки reqwest. Изменение let metas: Vec<Meta> = serde_json::from_value(data).unwrap();
на let metas: Vec<Meta> = serde_json::from_value(data)?;
завершается неудачно со следующей ошибкой:
the trait `std::convert::From<serde_json::error::Error>` is not implemented for `reqwest::error::Error`
Можно ли преобразовать serde_json::error::Error
в reqwest::error::Error
, поместив его в Kind::Json
перечисление ошибки reqwest или я должны сделать пользовательский список ошибок, который охватывает оба, как упомянуто в этой статье ?