Tob*_*ann 4 generics traits lifetime rust
给定一个通用函数:
fn foo<T> (_x: T) {}
Run Code Online (Sandbox Code Playgroud)
我想添加一个serde::Deserializetrait bound。然而以下
fn foo<T: serde::Deserialize> (_x: T) {}
Run Code Online (Sandbox Code Playgroud)
结果是
fn foo<T> (_x: T) {}
Run Code Online (Sandbox Code Playgroud)
并尝试像我了解有关反序列化器生命周期的 serde 文档一样
fn foo<'de, T> where T: serde::Deserialize<'de> (_x: T) {}
Run Code Online (Sandbox Code Playgroud)
也会产生错误:
fn foo<T: serde::Deserialize> (_x: T) {}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
Oh, it was just a basic error in the function syntax.
fn foo<'de, T>(_x: T)
where
T: serde::Deserialize<'de>,
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
is correct and works.