Я пытаюсь объявить структуру, которая содержит другую структуру любого данного типа, которая может быть Deserialize
и Serialize
.
#[derive(Debug, Serialize, Deserialize)]
pub struct Foo<T: Deserialize + Serialize> {
pub data: T,
}
Rust детская площадка .
Для этого я попытался использовать границы черт, используя такие черты, как DeserializeOwned
или Deserialize
. Оба сбой во время компиляции со следующими ошибками:
error[E0283]: type annotations required: cannot resolve `T: serde::Deserialize<'de>`
--> src/main.rs:9:28
|
9 | #[derive(Debug, Serialize, Deserialize)]
| ^^^^^^^^^^^
|
= note: required by `serde::Deserialize`
error[E0637]: `&` without an explicit lifetime name cannot be used here
--> src/main.rs:10:19
|
10 | pub struct Foo<T: Deserialize + Serialize> {
| ^^^^^^^^^^^ explicit lifetime name needed here
Я столкнулся с ошибками при попытке добавить время жизни, поскольку я не использую хранение ссылки, а значение.
Какой самый идиоматический способ объявления этого типа структуры?