簡體   English   中英

如何使用使用生命周期名稱參數化的特征綁定聲明泛型函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM