Preciso de uma função que desserialize um item e o defina como uma estrutura. E preciso de uma função que defina um item como uma estrutura, mas esse item pode não ser implementado DeserializeOwned
. Eu preciso de algo assim:
struct SomeStruct<T> {
item: T,
}
impl<T> SomeStruct<T> {
pub fn set_item_from_json<D: DeserializeOwned>(&mut self, json: String) {
let item: D = serde_json::from_str(&json).unwrap();
self.item = item;
}
pub fn set_item(&mut self, item: T) {
self.item = item;
}
}
O código acima, como esperado, não funciona porque mismatched types [E0308] expected type parameter 'T', found type parameter 'D'
ocorre em set_item_from_json
. O que posso fazer?