Pre-RFC: Unsafe traits conditionally depending on safe trait behaviour
Rust Internals [Unofficial]
May 27, 2026
My problem with this is that #[unsafe(has_preconditions(Allocator))] introduces an obligation, but is too close of a syntax to #[unsafe(satisfies_preconditions(Allocator))] which discharges an obligation (opposite polarity).
unsafe fn and unsafe { .. } is the more frequent confusion, but at least one has braces and the other doesn't, and one is applied to an item and the other is an expression.. so it feels different in a way that #[unsafe(..something)] doesn't.
But I guess this ship sailed. (unsafe trait / unsafe impl is just as confusable)
Discussion in the ATmosphere