Memory management in Rust, Part 1: Ownership