我刚开始学习 Rust。但我不得不问一下,以满足我的好奇心。下面是答案。
我知道 push_str 在两种情况下都会引发错误,因为我没有在任何地方使用mut关键字。
fn main() {
let my_string1 = "Hello, world! 1";
let my_string2 = String::from("Hello, world! 2");
my_string1.push_str("My new String 1");
my_string2.push_str("My new String 2");
}
但是我在每个教程中都看到人们使用String::from,但他们没有使其可变。如果您的字符串永远不会变异,还有什么理由使用 String::from 吗?我们不能像上面的 my_string1 那样直接用类型 &str 定义它吗?
所以基本上我的意思是问String::from是否只有使用mut关键字才有意义?
当然,在某些情况下这可能会很有用 - 基本上,任何时候你特别需要一个
String
但没有一个。HashMap<String, _>
,因为某些键将是动态的。在这种情况下,即使是非动态字符串也需要转换为拥有的String
。(警告:您可以使用Cow<str, 'static>
它,这允许您在同一个容器中同时使用&'static str
和,String
但代价是需要一个分支来访问内容。)String
。mut
。我确信有些教程示例并不严格需要 a ,
String
而可以使用 a&str
。我们需要查看具体示例来评估是否是这种情况,但我们不能断然说将 a 转换&'static str
为 aString
永远没有用。