我正在尝试理解Rust中的生命周期,并想知道它们是否仅仅是一种安全措施(以及在错误情况下如何保证安全性的通信方式),或者是否存在不同生命周期选择实际上会改变程序运行方式的情况,即生命周期是否对编译后的程序产生语义差异。
这里所说的“生命周期”指的是我们包含在代码中的所有繁琐的小标记,如' a'、' b'、' static'。当然,写代码时必须使用这些标记才能让借用检查器满意。
这里所说的“生命周期”指的是我们包含在代码中的所有繁琐的小标记,如' 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 ++中。
Rc
指针这样的东西来进行动态生命周期扩展,就像在垃圾回收语言中一样)。 - B. StriegelRc
的情况下,当返回String
时,其缓冲区可以看作是其生命周期被“延长”了。 - Matthieu M.