Borrows without lifetimes
Scope-bound borrows (&T, &mut T) catch dangling references, aliased mutation, and use-after-free at compile time. You never write 'a, 'b, or 'static. For owned heap objects there's *T with auto-drop at scope exit, plus defer and defer_err for arbitrary cleanups.
fn draw() {
let p: *Point = Point { x: 1, y: 2 };
render(p);
} // freed at scope exit
fn parse_tree() {
let arena: *Arena = Arena::new(4096);
defer arena.free();
let n1: *Node = arena.create(Node);
let n2: *Node = arena.create(Node);
} // arena freed in one shot