给出一个通用函数:
fn foo<T> (_x: T) {}
我想添加一个serde::Deserialize
特质绑定。但是,以下
fn foo<T: serde::Deserialize> (_x: T) {}
产生
error[E0637]: `&` without an explicit lifetime name cannot be used here
--> src/lib.rs:1:11
|
1 | fn foo<T: serde::Deserialize> (_x: T) {}
| ^^^^^^^^^^^^^^^^^^ explicit lifetime name needed here
尝试以我理解the serde documentation regarding deserializer lifetimes
fn foo<'de, T> where T: serde::Deserialize<'de> (_x: T) {}
还会产生错误:
error: expected `(`, found `where`
--> src/lib.rs:1:16
|
1 | fn foo<'de, T> where T: serde::Deserialize<'de> (_x: T) {}
| ^^^^^ expected `(`
我在做什么错了?
答案 0 :(得分:3)
哦,这只是函数语法中的一个基本错误。
fn foo<'de, T>(_x: T)
where
T: serde::Deserialize<'de>,
{
// ...
}
是正确的并且有效。