
0

对Rust生命周期的一些常见误解
source link: https://zlotus.github.io/2022/12/24/common-rust-lifetime-misconceptions/
1 个月前发表1 个月前更新Programming3 分钟读完 (大约401个字)
对Rust生命周期的一些常见误解
本文内容大多翻译自原文:Common Rust Lifetime Misconceptions。
- 误解:
T
只包含自有类型- 如果
T: 'static
则T
将在整个程序的生命周期中一直有效 &'a T
和T: 'a
是同一个东西- 我的代码不涉及泛型,所以无需考虑生命周期
- 如果编译通过,那么我的生命周期注解是正确的
- 智能指针中的trait对象没有生命周期
- 编译器错误消息会告诉我如何修复我的程序
- 生命周期可以在运行时增长和缩短
- 降级为可变引用以共享引用是安全的
- 闭包遵循与函数相同的生命周期省略规则
文中列出的这些误解都是我曾经以为正确的概念,我也看到现在仍有许多初学者都因为这些误解而苦苦挣扎。文中的一些术语可能不标准,我列了一张表,以解释我在文中使用某些短语时原本想表达的意思。
短语 | 解释 |
---|---|
T |
1) 1) 包含所有可能类型的集合 或 2) 该集合中的某种类型 |
自有类型 | 某些非引用类型,如i32 、String 、Vec 等 |
1) 借用类型 或 2) 引用类型 |
某些引用类型,可变或不可变均可,如&i32 、&mut i32 等 |
1) 可变借用 或 2) 互斥借用 |
排他可变引用,如&mut T |
1) immut ref or 2) shared ref |
shared immutable reference, i.e. &T |
#Rust
Recommend
About Archive Link
everyday a lot of link has gone away.
archive.link will keep it forever.