fn main() {
let string = "Rust Programming".to_string();
let mut slice = &string[5..12].to_string(); // Doesn't work...why?
let mut slice = string[5..12].to_string(); // works
let mut slice2 = String::from(&string[5..12]); // Works
slice.push('p');
println!("slice: {}, slice2: {}, string: {}", slice,slice2,string);
}
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?请解释。
这里的主要问题是&优先级低于方法调用。
所以,实际代码是
let mut slice = &(string[5..12].to_string());
Run Code Online (Sandbox Code Playgroud)
因此,您引用了临时 String 对象的引用,该对象已删除且以后无法使用。
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |