【发布时间】:2015-09-02 17:32:13
【问题描述】:
我正在尝试了解 Rust 中的生命周期,并问自己它们是否“只是”一种安全措施(以及在出现错误的情况下传达如何确保安全的一种方式),或者是否存在以下情况生命周期的不同选择实际上会改变程序的运行方式,即生命周期是否会对编译后的程序产生语义差异。
对于“生命周期”,我指的是所有令人讨厌的小 '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++ 中。
【问题讨论】:
标签: rust