我是一个Rust新手,仍然在为Rust中的生存期而奋斗。以下是我正在阅读的一本书中的示例。有人能帮忙解释一下为什么作者可以通过查看函数签名就获取此信息吗?我已经基本了解了借用、引用等,但仍然无法理解。
例如,假设我们有一个解析函数,它接受字节切片并返回一个结构,其中包含解析结果:
fn parse_record<'i>(input: &'i [u8]) -> Record<'i> { ... }
不需要查看Record类型的定义,我们可以得出结论:如果我们从parse_record接收一个Record,无论它包含哪些引用,这些引用都必须指向我们传入的输入缓冲区,并且不指向其他地方(除了可能是“静态值”)。
'i
中推导出来。由于Rust不允许返回对局部变量的引用,并且Record
与input
具有相同的生命周期,这意味着Record
中的任何内容都必须来自于input
。 - GrayCatRecord
应该与作用域中名为'i
的值一样长寿,我们就得到了Record<'i>
。 - Optimistic Peach