struct User { age: i32, nick: String,}impl User { fn new(age: i32, nick: String) -> User { User{age: age, nick: nick} } fn setAge(&mut self, age: i32) { self.age = age; } fn printInfo(&self) { println!("My name is: {}, my age is: {}.", self.nick, self.age); }}fn main() { let mut jim = User::new(99, "jim".to_string()); jim.printInfo(); let jimPtr = &mut jim as *mut User; unsafe { (*jimPtr).setAge(100); } jim.printInfo(); //这里是按值传递,下面会证明 let jimCopy = jim; jimCopy.printInfo(); unsafe { (*jimPtr).setAge(200); } //上面的一行代码其实已经把年龄修改成了200,但是这里打印还是100,说明let jimCopy=jim;是按值传递 jimCopy.printInfo();}