The borrow checker in Rust is frankly novel. Cyclone had something somewhat similar, but not the same.
The broader ML-like type system in Rust is not novel, but the integration of the borrow checker -- and its move semantics more broadly -- with it... that form honestly is an innovation. And one I'd have a hard time living without at this point.
And also one I'd like to see in more languages! Especially a simpler one, closer to C.
True! the borrow checker is a special thing. This is what i mean when i say "explicit data flow analysis".
In a way this is compiler internals exposed to a programmer.