gpt4 book ai didi

generics - 如何声明具有生命周期名称参数化特征绑定(bind)的泛型函数?

转载 作者:行者123 更新时间:2023-11-29 07:54:10 25 4
gpt4 key购买 nike

给定一个通用函数:

fn foo<T> (_x: T) {}

我想添加一个 serde::Deserialize 特征绑定(bind)。然而以下

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 `(`

我做错了什么?

最佳答案

哦,这只是函数语法中的一个基本错误。

fn foo<'de, T>(_x: T)
where
T: serde::Deserialize<'de>,
{
// ...
}

正确且有效。

关于generics - 如何声明具有生命周期名称参数化特征绑定(bind)的泛型函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53746310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com