繁体   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