Rust 生命周期:为什么要有它,实际代码里到底怎么用?
第一次看到 Rust 的生命周期标注,很多人都会有一个直接反应: fn longest<'a>(x: &'a str, y: &'a str) -> &'a str { if x.len() > y.len() { x } else { y } } 这里的 'a 到底是什么?它是不是在告诉 Rust,让这两个字符串“活久一点”?如果只是为了让引用活得更久,为什么不让程序自动处理? 这个疑问很正常。生命周期不是一种让变量延长寿命的语法,而是在描述一件事: 这个引用在被使用时,它指向的数据还活着吗? 如果答案无法确定,程序就可能拿着一个已经失效的地址继续读写。这种引用叫悬垂引用。R...