Pointers are powerful because they let code refer to objects indirectly, but that flexibility makes lifetime and bounds errors easy. Resource handles, spans, and standard containers provide clearer contracts; related utility types such as variant, optional, and any express alternatives without inventing ad hoc conventions.
Pointers and containers
Ownership, borrowing, fixed-size sequences, and alternatives