我一直在学习Ruust,我也一直在努力学习借阅判断器的工作原理,但我遇到了这两个例子,我不明白为什么只有一个被认为是借来的:
fn main() {
let mut x = String::from("aa ab");
let y = first_word(&x);
x.clear(); //Error cannot borrow X
println!("{y}");
}
//Returns an i32 reference
fn first_word(s: &String) -> &i32 {
return &32;
}
fn main() {
let mut x = String::from("aa ab");
let y = first_word(&x);
x.clear(); //Everything is fine
println!("{y}");
}
//Returns an i32
fn first_word(s: &String) -> i32 {
return 32;
}
有没有人可以解释一下为什么只有第二种方法有效?