-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Open
Description
因为我半年前是看这个教程入门的(有些概念当初并看不懂),经过半年的学习和实践Rust有一些更好帮助初学者的建议.
-
原文中
当把具体的引用传给 longest 时,那生命周期 'a 的大小就是 x 和 y 的作用域的重合部分,换句话说,'a 的大小将等于 x 和 y 中较小的那个。由于返回值的生命周期也被标记为 'a,因此返回值的生命周期也是 x 和 y 中作用域较小的那个。"
此处可以加一句说明生命周期在函数参数中只能缩小不能扩大(covariance),因为两个参数的生命周期都是'a,所以'a只能缩小为较小的那个.直接给出这个结论可能让人摸不着头脑.
-
o生命周期标注并不会改变任何引用的实际作用域 -- 鲁迅
实在遇到解决不了的生命周期标注问题,可以尝试 T: 'static,有时候它会给你奇迹这两句当初让我困惑了很久,既然无法改变真正生命周期又何来什么奇迹,个人觉得这句话有问题,因为T:'static更多用来作为bound而不是讨好编译器,例如tokio::spawn的’static trait bound还有Box<dyn Error + Send + Sync + ‘static>,这里的’static是为了让这个Error全局有效并且可以方便的在在线程间传递,本质还是因为用到的库标了这个bound需要配合,而不是“遇到解决不了的生命周期标注问题”
Metadata
Metadata
Assignees
Labels
No labels