Memory management in Rust, Part 2: Borrowing