Borrow checking allows even structures that support mutation to be safely (checked by the compiler) treated as immutable, and thus as values.
Clojure also recognizes the connection between ownership and mutability in its "transients": https://clojure.org/reference/transients ... compile time borrow checking extends that idea to an entire language.