Rust 2026 路线图:不可移动类型与保证析构(Move/Forget trait)
来源:github.com — 2026-08-03
📋 概述
Rust 项目目标(rust-project-goals)正式接受 2026-2027 年的 Move trait 提案:引入 Move 与 Forget trait,让类型可以显式声明自己不可被移动、不可被遗忘,从而支撑 scoped spawn、async drop 与默认 pin。现状是 Rust 假设所有类型都可被移动和遗忘,自引用 async future 只能靠 Pin 以“位置”而非“类型”的方式编码不可移动性,带来大量复杂度。该提案旨在让这些能力显式化。
🔑 核心要点
- 提案引入 Move 与 Forget trait,让类型可以明确选择是否支持移动与遗忘
- 当前 Rust 假定所有类型都可移动、可被 mem::forget,这些假设被写进语言
- 自引用 async future 无法安全移动,现状只能用 Pin 编码,带来巨大复杂度
- 目标应用场景包括 scoped spawn、async drop、默认 pin
- 将先在编译器实现 MVP、编写 RFC,并在 Linux 内核中进行真实世界验证
- 遵循先例:同 Sized 层级工作一样,放宽“所有类型都有编译期已知大小”的假设
💡 金句
今天 Rust 假设所有类型都能被移动(在内存中搬移)和被遗忘(通过 mem::forget 而无需运行析构)。我们引入 Move 与 Forget 这类 trait,让这些能力显式化,允许类型选择退出。
👍 0
👎 0
← 返回 Lobsters 首页