![](/img/trans.png)
[英]How do I bound a generic type with a trait that requires a lifetime parameter if I create the reference inside the function?
[英]How to declare a generic function with a trait bound that is parameterized with a lifetime name?
給定一個通用函數:
fn foo<T> (_x: T) {}
我想添加一個serde::Deserialize
trait bound。 但是以下
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
嘗試它就像我理解有關解串器生命周期的serde文檔
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 `(`
我究竟做錯了什么?
哦,這只是函數語法中的一個基本錯誤。
fn foo<'de, T>(_x: T)
where
T: serde::Deserialize<'de>,
{
// ...
}
是正確和有效的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.