我希望我的特性依赖于Serde:
pub trait MyTrait: Serialize + DeserializeOwned {}
#[derive(Serialize, Deserialize)]
pub struct MyStruct<T: MyTrait> {
value: T,
}
impl MyTrait for i32 {}
impl MyTrait for MyStruct<i32> {}
(完整代码)
但是我遇到了这个错误:
error[E0283]: type annotations required: cannot resolve `T: serde::Deserialize<'de>`
--> src/main.rs:11:21
|
11 | #[derive(Serialize, Deserialize)]
| ^^^^^^^^^^^
|
= note: required by `serde::Deserialize`
在这个上下文中,我不知道那是什么意思。我不明白它与关于 E0283 的信息有什么关联。
(根据Serde 生命期信息,我认为我需要 DeserializeOwned
,但我找不到有关“扩展”特征的任何信息,所以我可能是错误的)。
MyTrait
施加的约束在这种情况下仍然可以正常工作。 - Peter Hall