我一直在学习Effective Rust第14条-静态寿命看起来我不应该像下面这样使用const:
const CANSWER: Item = Item { contents: 42 };
static SANSWER: Item = Item { contents: 42 };
pub fn the_answer() -> &'static Item {
&CANSWER
}
#[derive(Debug)]
pub struct Item {contents: u32 }
fn main() {
let c = the_answer();
println!("{c:?}");
}
它说这将得到一个错误,但为什么它编译?
我一直在寻找答案,但找不到。
1条答案
按热度按时间62o28rlo1#
这被称为静态提升,似乎是在2017年添加的。本质上,当您引用
const
值时,它会创建一个static
。之前,它会创建一个局部变量。