rust 引用规则: 要么 只能有一个可变引用,要么 只能有多个不可变引用
// change 函数
fn change(s:&mut String){
s.clear(); // 清空
}
这样不可以编译
let mut s = String::from("abed");
let s_str_1 = &s[..1]; // 不可变引用 ?
change(&mut s); //可变引用
println!("mut s={}",s);
let s_str_2 = &s_str_1[..1]; // 不可变引用 ?
println!("mut s={},s_str_1={},s_str_2={}",s,s_str_1,s_str_2);
这样就可以编译,导致运行panic;
let mut s = String::from("abed");
change(&mut s); //可变引用
println!("mut s={}",s);
let s_str_1 = &s[..1]; // 不可变引用 ?
let s_str_2 = &s_str_1[..1]; // 不可变引用 ?
println!("mut s={},s_str_1={},s_str_2={}",s,s_str_1,s_str_2);
为啥一个可以编译,一个不可以编译呢,新手求解答。