Is Rust the first language to feature this borrow checker, memory safe without garbage collection concept? What other languages are there that accomplish the same things memory wise?