diff --git a/src/libsyntax/ptr.rs b/src/libsyntax/ptr.rs index d987dc855b615..e75cc8b1756d1 100644 --- a/src/libsyntax/ptr.rs +++ b/src/libsyntax/ptr.rs @@ -1,17 +1,12 @@ //! The AST pointer. //! -//! Provides `P`, a frozen owned smart pointer, as a replacement for `@T` in -//! the AST. +//! Provides `P`, a frozen owned smart pointer. //! //! # Motivations and benefits //! //! * **Identity**: sharing AST nodes is problematic for the various analysis //! passes (e.g., one may be able to bypass the borrow checker with a shared -//! `ExprKind::AddrOf` node taking a mutable borrow). The only reason `@T` in the -//! AST hasn't caused issues is because of inefficient folding passes which -//! would always deduplicate any such shared nodes. Even if the AST were to -//! switch to an arena, this would still hold, i.e., it couldn't use `&'a T`, -//! but rather a wrapper like `P<'a, T>`. +//! `ExprKind::AddrOf` node taking a mutable borrow). //! //! * **Immutability**: `P` disallows mutating its inner `T`, unlike `Box` //! (unless it contains an `Unsafe` interior, but that may be denied later).