0

对Rust生命周期的一些常见误解

 2023-02-06 21:18:12
source link: https://zlotus.github.io/2022/12/24/common-rust-lifetime-misconceptions/
1 个月前发表1 个月前更新Programming3 分钟读完 (大约401个字)

对Rust生命周期的一些常见误解

本文内容大多翻译自原文:Common Rust Lifetime Misconceptions
  • 误解:
    1. T只包含自有类型
    2. 如果T: 'staticT将在整个程序的生命周期中一直有效
    3. &'a TT: 'a是同一个东西
    4. 我的代码不涉及泛型,所以无需考虑生命周期
    5. 如果编译通过,那么我的生命周期注解是正确的
    6. 智能指针中的trait对象没有生命周期
    7. 编译器错误消息会告诉我如何修复我的程序
    8. 生命周期可以在运行时增长和缩短
    9. 降级为可变引用以共享引用是安全的
    10. 闭包遵循与函数相同的生命周期省略规则

文中列出的这些误解都是我曾经以为正确的概念,我也看到现在仍有许多初学者都因为这些误解而苦苦挣扎。文中的一些术语可能不标准,我列了一张表,以解释我在文中使用某些短语时原本想表达的意思。

短语 解释
T 1) 1) 包含所有可能类型的集合
2) 该集合中的某种类型
自有类型 某些非引用类型,如i32StringVec
1) 借用类型
2) 引用类型
某些引用类型,可变或不可变均可,如&i32&mut i32
1) 可变借用
2) 互斥借用
排他可变引用,如&mut T
1) immut ref or
2) shared ref
shared immutable reference, i.e. &T

About Archive Link


everyday a lot of link has gone away.
archive.link will keep it forever.