我试图在 rust 迹中摸索生命周期,并问自己它们是否"只是"一种安全措施(以及在出现错误的情况下如何确保安全的一种沟通方式),或者是否存在生命周期的不同 Select 实际改变程序运行方式的情况,即生命周期是否对已编译程序产生语义差异.
在"一生"中,我指的是所有让借书人开心的讨厌的小'a
、'b
、'static
标记.当然,写作
{
let foo = File::open("foo.txt")?;
}
foo.write_all(b"bar");
而不是
let foo = File::open("foo.txt")?;
foo.write_all(b"bar");
在写入发生之前,文件关闭描述符将被关闭,即使我们可以访问FoO,但是C++中也会发生这种范围和析构函数调用.