rust 为什么const变量可以和static lifetime一起使用?

mbzjlibv  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(86)

我一直在学习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:?}");
}

它说这将得到一个错误,但为什么它编译?
我一直在寻找答案,但找不到。

62o28rlo

62o28rlo1#

这被称为静态提升,似乎是在2017年添加的。本质上,当您引用const值时,它会创建一个static。之前,它会创建一个局部变量。

相关问题