gpt4 book ai didi

string - 为什么 String::from(&str) 和 &str.to_string() 在 Rust 中表现不同?

转载 作者:行者123 更新时间:2023-12-05 08:47:39 25 4
gpt4 key购买 nike

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);
}

这里发生了什么?请解释。

最佳答案

这里的主要问题是 & 的优先级低于方法调用。

所以,实际代码是

let mut slice = &(string[5..12].to_string());

所以你引用了一个临时字符串对象,这个对象被删除了,以后不能使用。

关于string - 为什么 String::from(&str) 和 &str.to_string() 在 Rust 中表现不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67137259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com