Rustのコア設計哲学は、ライブラリベースの型がネイティブの言語機能のように感じられる「ゼロコスト抽象化」を提供できる能力に依存しています。しかし、組み込みの参照(`&T`や`&mut T`など)と、ユーザー定義のスマートポインタ(`Arc`、`Pin`、またはカスタムのFFIラッパーなど)の間には技術的なギャップが存在します。組み込みの参照は、自動的な再借用やフィールド投影をサポートしており、借用チェッカーはプログラマが構造体の特定の部分にアクセスしていることを理解できますが、カスタムのスマートポインタには現在これらの機能が備わっていません。このため、開発者は同様の結果を得るために、`.as_deref_mut()`のような不自然なメソッドや複雑なマクロを使用せざるを得ないことがよくあります。

この課題に対処するため、Rust言語チームは「Beyond the &」プロジェクトに取り組んでいます。提案されている解決策は、コンパイラの内部的な「place(場所)」という概念をユーザーコードに公開することです。Rustにおいて「place」とは、C言語のlvalueと同様に、値の読み取りや書き込みができる場所を指します。チームは、すべてのスマートポインタに対して新しいハンドル型を導入する計画です。ユーザーがこれらのハンドルに対して特定のトレイト(`ReadPlace`、`WritePlace`、`BorrowPlace`など)を実装できるようにすることで、コンパイラに対してカスタムポインタをネイティブな参照であるかのように扱う方法を教えることができます。これにより、`NonNull`ポインタのフィールド投影や、`MutexGuard`のような型に対する手動のデリファレンスを必要としない自動的な再借用などの機能が可能になります。

このプロジェクトは開発者のメンタルモデルを簡素化することを目的としていますが、言語設計と構文に関する新たな複雑さも導入します。例えば、チームは`BorrowPlace`を介した新しいスマートポインタの作成を表現する最良の方法について、既存の`&`記号を使用するか、あるいは`@`のような新しい記号を使用するかをまだ議論しています。さらに、一部の批評家は、ドット(`.`)演算子により多くの暗黙的な動作を追加することで、言語の学習曲線が急峻になるのではないかと疑問を呈しています。このプロジェクトは現在プロトタイプ段階にあり、チームは言語の安定した一部となる前に、設計が多様なユースケースに対応できることを確認するためのコミュニティからのフィードバックを求めています。