Rust 的核心设计理念依赖于其提供零成本抽象的能力,即基于库的类型可以感觉就像原生语言特性一样。然而,内置引用(如 `&T` 和 `&mut T`)与用户定义的智能指针(如 `Arc`、`Pin` 或自定义 FFI 包装器)之间存在技术差距。虽然内置引用支持自动重新借用和字段投影——允许借用检查器理解程序员正在访问结构体的特定部分——但自定义智能指针目前缺乏这些功能。这往往迫使开发者使用 `.as_deref_mut()` 等笨拙的方法或复杂的宏来达到同样的效果。

为了解决这个问题,Rust 语言团队正在开展 'Beyond the &' 项目。提议的解决方案涉及将编译器的内部“位置”(place)概念暴露给用户代码。在 Rust 中,“位置”是可以读取或写入值的地点,类似于 C 语言中的左值。团队计划为每个智能指针引入一种新的句柄类型。通过允许用户在这些句柄上实现特定的 trait(如 `ReadPlace`、`WritePlace` 和 `BorrowPlace`),编译器就可以被教会如何像对待原生引用一样与自定义指针交互。这将启用诸如 `NonNull` 指针的字段投影或 `MutexGuard` 等类型的自动重新借用功能,而无需手动解引用。

虽然该项目旨在简化开发者的心理模型,但它也引入了关于语言设计和语法的复杂性。例如,团队仍在争论通过 `BorrowPlace` 创建新智能指针的最佳表示方法,考虑是使用现有的 `&` 符号还是像 `@` 这样的新符号。此外,一些批评者质疑这些变化是否会通过为点号(`.`)运算符增加更多隐式行为而增加语言的学习曲线。该项目仍处于原型阶段,团队正在寻求社区反馈,以确保在设计成为语言的稳定组成部分之前,能够适应多样化的使用场景。