Rust中“ p:&'a i32”和“ p:&'static i32”生存期之间的差异?

问题描述 投票:0回答:1

几天前我开始学习Rust。

这是吉姆·布兰迪(Jim Blandy)着名的著作《锈中的编程》的摘录。

对于代码

fn g<'a>(p: &'a i32) { ... }

let x = 10;
g(&x);

表示

Rust选择&x的最小寿命,即对g的寿命。这符合所有约束:它不会超过x,并且将对g的整个调用括起来。因此,代码必须聚集。

Q1。 &x的最小生存期意味着什么?

对于代码

fn f(p: &'static i32) { ... }

let x = 10;
f(&x);

Q2。为什么此代码将失败?根据我的理解,如果我们使用&'static表示整个程序中都存在的静态全局变量。 link

rust lifetime
1个回答
0
投票
示例:

let x: 'static = 10; const y: i32 = 10; f(&x); f(&y);

© www.soinside.com 2019 - 2024. All rights reserved.