我需要一个对项进行反序列化并将其设置为 struct 的函数.我需要一个将项设置为 struct 的函数,但该项可能不会实现DeserializeOwned
.
我需要这样的东西:
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;
}
}
正如预期的那样,上面的代码不起作用,因为mismatched types [E0308] expected type parameter 'T', found type parameter 'D'
发生在set_item_from_json
中.我能做什么?