为什么字符串::from(&;str)和&;str.to_string()在锈蚀中的表现不同?
这里发生了什么?请解释。这里的主要问题是为什么字符串::from(&;str)和&;str.to_string()在锈蚀中的表现不同?,string,rust,String,Rust,这里发生了什么?请解释。这里的主要问题是&的优先级低于方法调用 所以,实际代码是 let mut slice=&(字符串[5..12]。to_string()); 因此,您需要引用已删除且以后无法使用的临时字符串对象。您应该将引用括在括号中,并对结果调用该方法 fn main() { let string = "Rust Programming".to_string(); let mut slice = &string[5..12].to_string(
&
的优先级低于方法调用
所以,实际代码是
let mut slice=&(字符串[5..12]。to_string());
因此,您需要引用已删除且以后无法使用的临时字符串对象。您应该将引用括在括号中,并对结果调用该方法
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);
}
fn main() {
let string = "Rust Programming".to_string();
let mut slice = (&string[5..12]).to_string(); // ! -- this should work -- !
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);
}