Rust 为什么绑定为'T:';a“存储引用所需的”&';T`?

Rust 为什么绑定为'T:';a“存储引用所需的”&';T`?,rust,lifetime,Rust,Lifetime,鉴于此代码: struct RefWrapper<'a, T> { r: &'a T, } struct RefWrapper这是良好格式规则的一部分。只有当T:'a('T比'a更长寿;这是必需的,因为我们有一个可以在作用域'a期间访问的引用;T中指向的值至少也需要对该作用域有效)时,类型和'a T才是格式良好的 struct RefWrapper恭喜你,你是对的!自Rust 1.31起,由于以下原因,用户输入此限制的要求已被删除: 消除了对结构上显式T:'x注释的

鉴于此代码:

struct RefWrapper<'a, T> {
    r: &'a T,
}

struct RefWrapper这是良好格式规则的一部分。只有当
T:'a
('T比'a更长寿;这是必需的,因为我们有一个可以在作用域
'a
期间访问的引用;
T
中指向的值至少也需要对该作用域有效)时,类型
和'a T
才是格式良好的


struct RefWrapper恭喜你,你是对的!自Rust 1.31起,由于以下原因,用户输入此限制的要求已被删除:

消除了对结构上显式
T:'x
注释的需要。我们将根据结构的字段推断它们的存在。简言之,如果结构包含对
T
的直接或间接引用,并且其生存期
'x
,那么我们将推断
T:'x
是一个需求

基本上,没有一种情况是不需要这样做的,因此强迫程序员写出来没有多大价值。

我问了关于#rust的问题,如果取消
t:
要求,这似乎会破坏一切。但我还没有真正理解这些代码,我现在将停止尝试。希望了解这个问题的人能同时回答^_^
pub fn foo<'a, T>(x: &'a T) { }